Commit fd982466 authored by Jasper Chapman-Black's avatar Jasper Chapman-Black Committed by Commit Bot

SuperSize: Caspian: Filter symbols by minimum size

Thanks to earlier refactoring work, this is super easy!

Bug: 1011921
Change-Id: I67e8f68ef0b87092c36e1176b3e8d033e8597db7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1891133
Commit-Queue: Jasper Chapman-Black <jaspercb@chromium.org>
Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710981}
parent 85dc7849
...@@ -42,9 +42,16 @@ void LoadSizeFile(const char* compressed, size_t size) { ...@@ -42,9 +42,16 @@ void LoadSizeFile(const char* compressed, size_t size) {
void BuildTree(bool group_by_component, void BuildTree(bool group_by_component,
const char* include_regex_str, const char* include_regex_str,
const char* exclude_regex_str) { const char* exclude_regex_str,
int minimum_size_bytes) {
std::vector<std::function<bool(const Symbol&)>> filters; std::vector<std::function<bool(const Symbol&)>> filters;
if (minimum_size_bytes > 0) {
filters.push_back([minimum_size_bytes](const Symbol& sym) -> bool {
return sym.size >= minimum_size_bytes;
});
}
std::unique_ptr<RE2> include_regex; std::unique_ptr<RE2> include_regex;
if (include_regex_str && *include_regex_str) { if (include_regex_str && *include_regex_str) {
include_regex.reset(new RE2(include_regex_str)); include_regex.reset(new RE2(include_regex_str));
......
...@@ -144,18 +144,19 @@ const fetcher = new DataFetcher('data.size'); ...@@ -144,18 +144,19 @@ const fetcher = new DataFetcher('data.size');
let sizeFileLoaded = false; let sizeFileLoaded = false;
async function buildTree( async function buildTree(
groupBy, includeRegex, excludeRegex, highlightTest, methodCountMode, groupBy, includeRegex, excludeRegex, minSymbolSize, highlightTest,
onProgress) { methodCountMode, onProgress) {
if (!sizeFileLoaded) { if (!sizeFileLoaded) {
let sizeBuffer = await fetcher.loadSizeBuffer(); let sizeBuffer = await fetcher.loadSizeBuffer();
let heapBuffer = mallocBuffer(sizeBuffer); let heapBuffer = mallocBuffer(sizeBuffer);
console.log('Passing ' + sizeBuffer.byteLength + ' bytes to WebAssembly'); console.log('Passing ' + sizeBuffer.byteLength + ' bytes to WebAssembly');
let LoadSizeFile = Module.cwrap( let LoadSizeFile =
'LoadSizeFile', 'bool', ['number', 'number']); Module.cwrap('LoadSizeFile', 'bool', ['number', 'number']);
let start_time = Date.now(); let start_time = Date.now();
LoadSizeFile(heapBuffer.byteOffset, sizeBuffer.byteLength); LoadSizeFile(heapBuffer.byteOffset, sizeBuffer.byteLength);
console.log('Loaded size file in ' + console.log(
(Date.now() - start_time)/1000.0 + ' seconds'); 'Loaded size file in ' + (Date.now() - start_time) / 1000.0 +
' seconds');
Module._free(heapBuffer.byteOffset); Module._free(heapBuffer.byteOffset);
sizeFileLoaded = true; sizeFileLoaded = true;
...@@ -189,10 +190,10 @@ async function buildTree( ...@@ -189,10 +190,10 @@ async function buildTree(
} }
let BuildTree = let BuildTree =
Module.cwrap('BuildTree', 'void', ['bool', 'string', 'string']); Module.cwrap('BuildTree', 'void', ['bool', 'string', 'string', 'number']);
let start_time = Date.now(); let start_time = Date.now();
const groupByComponent = groupBy === "component"; const groupByComponent = groupBy === 'component';
BuildTree(groupByComponent, includeRegex, excludeRegex); BuildTree(groupByComponent, includeRegex, excludeRegex, minSymbolSize);
console.log('Constructed tree in ' + console.log('Constructed tree in ' +
(Date.now() - start_time)/1000.0 + ' seconds'); (Date.now() - start_time)/1000.0 + ' seconds');
...@@ -217,6 +218,11 @@ function parseOptions(options) { ...@@ -217,6 +218,11 @@ function parseOptions(options) {
const filterGeneratedFiles = params.has('generated_filter'); const filterGeneratedFiles = params.has('generated_filter');
const flagToHighlight = _NAMES_TO_FLAGS[params.get('highlight')]; const flagToHighlight = _NAMES_TO_FLAGS[params.get('highlight')];
let minSymbolSize = Number(params.get('min_size'));
if (Number.isNaN(minSymbolSize)) {
minSymbolSize = 0;
}
const includeRegex = params.get('include'); const includeRegex = params.get('include');
const excludeRegex = params.get('exclude'); const excludeRegex = params.get('exclude');
...@@ -227,6 +233,7 @@ function parseOptions(options) { ...@@ -227,6 +233,7 @@ function parseOptions(options) {
groupBy, groupBy,
includeRegex, includeRegex,
excludeRegex, excludeRegex,
minSymbolSize,
highlightTest, highlightTest,
url, url,
methodCountMode methodCountMode
...@@ -240,6 +247,7 @@ const actions = { ...@@ -240,6 +247,7 @@ const actions = {
groupBy, groupBy,
includeRegex, includeRegex,
excludeRegex, excludeRegex,
minSymbolSize,
highlightTest, highlightTest,
url, url,
methodCountMode methodCountMode
...@@ -254,8 +262,8 @@ const actions = { ...@@ -254,8 +262,8 @@ const actions = {
} }
return buildTree( return buildTree(
groupBy, includeRegex, excludeRegex, highlightTest, methodCountMode, groupBy, includeRegex, excludeRegex, minSymbolSize, highlightTest,
progress => { methodCountMode, progress => {
// @ts-ignore // @ts-ignore
self.postMessage(progress); self.postMessage(progress);
}); });
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment