2020-06-03 09:26:09 +00:00
|
|
|
// Copyright 2020 the V8 project authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
|
|
|
const UNCLASSIFIED_CATEGORY = 'unclassified';
|
|
|
|
const UNCLASSIFIED_CATEGORY_NAME = 'Unclassified';
|
|
|
|
|
|
|
|
// Categories for zones.
|
|
|
|
export const CATEGORIES = new Map([
|
|
|
|
[
|
|
|
|
'parser', new Set([
|
|
|
|
'AstStringConstants',
|
2020-07-28 13:38:56 +00:00
|
|
|
'parser-zone',
|
|
|
|
'pre-parser-zone',
|
2020-06-03 09:26:09 +00:00
|
|
|
])
|
|
|
|
],
|
|
|
|
[
|
|
|
|
'misc', new Set([
|
|
|
|
'Run',
|
|
|
|
'CanonicalHandleScope',
|
|
|
|
'Temporary scoped zone',
|
|
|
|
'UpdateFieldType',
|
|
|
|
])
|
|
|
|
],
|
|
|
|
[
|
|
|
|
'interpreter', new Set([
|
|
|
|
'InterpreterCompilationJob',
|
|
|
|
])
|
|
|
|
],
|
|
|
|
[
|
|
|
|
'regexp', new Set([
|
|
|
|
'CompileIrregexp',
|
|
|
|
])
|
|
|
|
],
|
|
|
|
[
|
|
|
|
'compiler-huge', new Set([
|
|
|
|
'graph-zone',
|
|
|
|
'instruction-zone',
|
|
|
|
'pipeline-compilation-job-zone',
|
|
|
|
'register-allocation-zone',
|
|
|
|
'register-allocator-verifier-zone',
|
|
|
|
])
|
|
|
|
],
|
|
|
|
[
|
|
|
|
'compiler-other', new Set([
|
|
|
|
'Compile',
|
|
|
|
'V8.TFAllocateFPRegisters',
|
|
|
|
'V8.TFAllocateGeneralRegisters',
|
|
|
|
'V8.TFAssembleCode',
|
|
|
|
'V8.TFAssignSpillSlots',
|
|
|
|
'V8.TFBuildLiveRangeBundles',
|
|
|
|
'V8.TFBuildLiveRanges',
|
|
|
|
'V8.TFBytecodeGraphBuilder',
|
|
|
|
'V8.TFCommitAssignment',
|
|
|
|
'V8.TFConnectRanges',
|
|
|
|
'V8.TFControlFlowOptimization',
|
|
|
|
'V8.TFDecideSpillingMode',
|
|
|
|
'V8.TFDecompressionOptimization',
|
|
|
|
'V8.TFEarlyOptimization',
|
|
|
|
'V8.TFEarlyTrimming',
|
|
|
|
'V8.TFEffectLinearization',
|
|
|
|
'V8.TFEscapeAnalysis',
|
|
|
|
'V8.TFFinalizeCode',
|
|
|
|
'V8.TFFrameElision',
|
|
|
|
'V8.TFGenericLowering',
|
|
|
|
'V8.TFHeapBrokerInitialization',
|
|
|
|
'V8.TFInlining',
|
|
|
|
'V8.TFJumpThreading',
|
|
|
|
'V8.TFLateGraphTrimming',
|
|
|
|
'V8.TFLateOptimization',
|
|
|
|
'V8.TFLoadElimination',
|
|
|
|
'V8.TFLocateSpillSlots',
|
|
|
|
'V8.TFLoopPeeling',
|
|
|
|
'V8.TFMachineOperatorOptimization',
|
|
|
|
'V8.TFMeetRegisterConstraints',
|
|
|
|
'V8.TFMemoryOptimization',
|
|
|
|
'V8.TFOptimizeMoves',
|
|
|
|
'V8.TFPopulatePointerMaps',
|
|
|
|
'V8.TFResolveControlFlow',
|
|
|
|
'V8.TFResolvePhis',
|
|
|
|
'V8.TFScheduling',
|
|
|
|
'V8.TFSelectInstructions',
|
|
|
|
'V8.TFSerializeMetadata',
|
|
|
|
'V8.TFSimplifiedLowering',
|
|
|
|
'V8.TFStoreStoreElimination',
|
|
|
|
'V8.TFTypedLowering',
|
|
|
|
'V8.TFTyper',
|
|
|
|
'V8.TFUntyper',
|
|
|
|
'V8.TFVerifyGraph',
|
|
|
|
'ValidatePendingAssessment',
|
|
|
|
'codegen-zone',
|
|
|
|
])
|
|
|
|
],
|
|
|
|
[UNCLASSIFIED_CATEGORY, new Set()],
|
|
|
|
]);
|
|
|
|
|
|
|
|
// Maps category to description text that is shown in html.
|
|
|
|
export const CATEGORY_NAMES = new Map([
|
|
|
|
['parser', 'Parser'],
|
|
|
|
['misc', 'Misc'],
|
|
|
|
['interpreter', 'Ignition'],
|
|
|
|
['regexp', 'Regexp compiler'],
|
|
|
|
['compiler-huge', 'TurboFan (huge zones)'],
|
|
|
|
['compiler-other', 'TurboFan (other zones)'],
|
|
|
|
[UNCLASSIFIED_CATEGORY, UNCLASSIFIED_CATEGORY_NAME],
|
|
|
|
]);
|
|
|
|
|
|
|
|
function buildZoneToCategoryMap() {
|
|
|
|
const map = new Map();
|
|
|
|
for (let [category, zone_names] of CATEGORIES.entries()) {
|
|
|
|
for (let zone_name of zone_names) {
|
|
|
|
if (map.has(zone_name)) {
|
|
|
|
console.error("Zone belongs to multiple categories: " + zone_name);
|
|
|
|
} else {
|
|
|
|
map.set(zone_name, category);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return map;
|
|
|
|
}
|
|
|
|
|
|
|
|
const CATEGORY_BY_ZONE = buildZoneToCategoryMap();
|
|
|
|
|
|
|
|
// Maps zone name to category.
|
|
|
|
export function categoryByZoneName(zone_name) {
|
|
|
|
const category = CATEGORY_BY_ZONE.get(zone_name);
|
|
|
|
if (category !== undefined) return category;
|
|
|
|
return UNCLASSIFIED_CATEGORY;
|
|
|
|
}
|