Home | History | Annotate | Download | only in heap-stats
      1 // Copyright 2018 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Categories for instance types.
      6 const CATEGORIES = new Map([
      7   [
      8     'user', new Set([
      9       'CONS_ONE_BYTE_STRING_TYPE',
     10       'CONS_STRING_TYPE',
     11       'DESCRIPTOR_ARRAY_TYPE',
     12       'ELEMENTS_TYPE',
     13       'EXTERNAL_INTERNALIZED_STRING_TYPE',
     14       'EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE',
     15       'EXTERNAL_ONE_BYTE_STRING_TYPE',
     16       'EXTERNAL_STRING_TYPE',
     17       'EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE',
     18       'FIXED_BIGINT64_ARRAY_TYPE',
     19       'FIXED_BIGUINT64_ARRAY_TYPE',
     20       'FIXED_DOUBLE_ARRAY_TYPE',
     21       'FIXED_FLOAT32_ARRAY_TYPE',
     22       'FIXED_FLOAT64_ARRAY_TYPE',
     23       'FIXED_INT16_ARRAY_TYPE',
     24       'FIXED_INT32_ARRAY_TYPE',
     25       'FIXED_INT8_ARRAY_TYPE',
     26       'FIXED_UINT16_ARRAY_TYPE',
     27       'FIXED_UINT32_ARRAY_TYPE',
     28       'FIXED_UINT8_ARRAY_TYPE',
     29       'FIXED_UINT8_CLAMPED_ARRAY_TYPE',
     30       'FUNCTION_CONTEXT_TYPE',
     31       'GLOBAL_ELEMENTS_TYPE',
     32       'GLOBAL_PROPERTIES_TYPE',
     33       'HEAP_NUMBER_TYPE',
     34       'INTERNALIZED_STRING_TYPE',
     35       'JS_ARGUMENTS_TYPE',
     36       'JS_ARRAY_BUFFER_TYPE',
     37       'JS_ARRAY_TYPE',
     38       'JS_BOUND_FUNCTION_TYPE',
     39       'JS_DATE_TYPE',
     40       'JS_ERROR_TYPE',
     41       'JS_FAST_ARRAY_KEY_ITERATOR_TYPE',
     42       'JS_FAST_ARRAY_VALUE_ITERATOR_TYPE',
     43       'JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE',
     44       'JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE',
     45       'JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE',
     46       'JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE',
     47       'JS_FUNCTION_TYPE',
     48       'JS_GENERATOR_OBJECT_TYPE',
     49       'JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE',
     50       'JS_GLOBAL_OBJECT_TYPE',
     51       'JS_GLOBAL_PROXY_TYPE',
     52       'JS_MAP_KEY_VALUE_ITERATOR_TYPE',
     53       'JS_MAP_TYPE',
     54       'JS_MAP_VALUE_ITERATOR_TYPE',
     55       'JS_MESSAGE_OBJECT_TYPE',
     56       'JS_OBJECT_TYPE',
     57       'JS_PROMISE_TYPE',
     58       'JS_REGEXP_TYPE',
     59       'JS_SET_TYPE',
     60       'JS_SET_VALUE_ITERATOR_TYPE',
     61       'JS_STRING_ITERATOR_TYPE',
     62       'JS_TO_WASM_FUNCTION',
     63       'JS_TYPED_ARRAY_TYPE',
     64       'JS_VALUE_TYPE',
     65       'JS_WEAK_MAP_TYPE',
     66       'MUTABLE_HEAP_NUMBER_TYPE',
     67       'NATIVE_CONTEXT_TYPE',
     68       'OBJECT_PROPERTY_DICTIONARY_TYPE',
     69       'ONE_BYTE_INTERNALIZED_STRING_TYPE',
     70       'ONE_BYTE_STRING_TYPE',
     71       'OTHER_CONTEXT_TYPE',
     72       'PROPERTY_ARRAY_TYPE',
     73       'SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE',
     74       'SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE',
     75       'SHORT_EXTERNAL_ONE_BYTE_STRING_TYPE',
     76       'SHORT_EXTERNAL_STRING_TYPE',
     77       'SLICED_ONE_BYTE_STRING_TYPE',
     78       'SLICED_STRING_TYPE',
     79       'STRING_EXTERNAL_RESOURCE_ONE_BYTE_TYPE',
     80       'STRING_EXTERNAL_RESOURCE_TWO_BYTE_TYPE',
     81       'STRING_TYPE',
     82       'SYMBOL_TYPE',
     83       'THIN_ONE_BYTE_STRING_TYPE',
     84       'THIN_STRING_TYPE',
     85       'WASM_INSTANCE_TYPE',
     86       'WASM_MEMORY_TYPE',
     87       'WASM_MODULE_TYPE',
     88     ])
     89   ],
     90   [
     91     'system', new Set([
     92       'ACCESS_CHECK_INFO_TYPE',
     93       'ACCESSOR_INFO_TYPE',
     94       'ACCESSOR_PAIR_TYPE',
     95       'ALLOCATION_MEMENTO_TYPE',
     96       'ALLOCATION_SITE_TYPE',
     97       'ARRAY_BOILERPLATE_DESCRIPTION_TYPE',
     98       'ARRAY_BOILERPLATE_DESCRIPTION_ELEMENTS_TYPE',
     99       'BOILERPLATE_ELEMENTS_TYPE',
    100       'BOILERPLATE_PROPERTY_ARRAY_TYPE',
    101       'BOILERPLATE_PROPERTY_DICTIONARY_TYPE',
    102       'BYTE_ARRAY_TYPE',
    103       'CALL_HANDLER_INFO_TYPE',
    104       'CELL_TYPE',
    105       'CODE_STUBS_TABLE_TYPE',
    106       'CONTEXT_EXTENSION_TYPE',
    107       'ENUM_CACHE_TYPE',
    108       'ENUM_INDICES_CACHE_TYPE',
    109       'FOREIGN_TYPE',
    110       'FUNCTION_TEMPLATE_INFO_ENTRIES_TYPE',
    111       'FUNCTION_TEMPLATE_INFO_TYPE',
    112       'INTERCEPTOR_INFO_TYPE',
    113       'JS_API_OBJECT_TYPE',
    114       'JS_ARRAY_BOILERPLATE_TYPE',
    115       'JS_OBJECT_BOILERPLATE_TYPE',
    116       'JS_SPECIAL_API_OBJECT_TYPE',
    117       'MAP_TYPE',
    118       'NUMBER_STRING_CACHE_TYPE',
    119       'OBJECT_BOILERPLATE_DESCRIPTION_TYPE',
    120       'OBJECT_TEMPLATE_INFO_TYPE',
    121       'OBJECT_TO_CODE_TYPE',
    122       'ODDBALL_TYPE',
    123       'PROMISE_REACTION_JOB_INFO_TYPE',
    124       'PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE',
    125       'PROPERTY_CELL_TYPE',
    126       'PROTOTYPE_INFO_TYPE',
    127       'PROTOTYPE_USERS_TYPE',
    128       'REGEXP_MULTIPLE_CACHE_TYPE',
    129       'RETAINED_MAPS_TYPE',
    130       'SCOPE_INFO_TYPE',
    131       'SCRIPT_LIST_TYPE',
    132       'SCRIPT_SHARED_FUNCTION_INFOS_TYPE',
    133       'SERIALIZED_OBJECTS_TYPE',
    134       'SINGLE_CHARACTER_STRING_CACHE_TYPE',
    135       'STACK_FRAME_INFO_TYPE',
    136       'STRING_SPLIT_CACHE_TYPE',
    137       'STRING_TABLE_TYPE',
    138       'TRANSITION_ARRAY_TYPE',
    139       'WEAK_NEW_SPACE_OBJECT_TO_CODE_TYPE',
    140     ])
    141   ],
    142   [
    143     'code', new Set([
    144       'BUILTIN',
    145       'BYTECODE_ARRAY_CONSTANT_POOL_TYPE',
    146       'BYTECODE_ARRAY_HANDLER_TABLE_TYPE',
    147       'BYTECODE_ARRAY_TYPE',
    148       'BYTECODE_HANDLER',
    149       'CODE_DATA_CONTAINER_TYPE',
    150       'DEOPTIMIZATION_DATA_TYPE',
    151       'EMBEDDED_OBJECT_TYPE',
    152       'FEEDBACK_CELL_TYPE',
    153       'FEEDBACK_METADATA_TYPE',
    154       'FEEDBACK_VECTOR_ENTRY_TYPE',
    155       'FEEDBACK_VECTOR_HEADER_TYPE',
    156       'FEEDBACK_VECTOR_SLOT_CALL_TYPE',
    157       'FEEDBACK_VECTOR_SLOT_CALL_UNUSED_TYPE',
    158       'FEEDBACK_VECTOR_SLOT_ENUM_TYPE',
    159       'FEEDBACK_VECTOR_SLOT_LOAD_TYPE',
    160       'FEEDBACK_VECTOR_SLOT_LOAD_UNUSED_TYPE',
    161       'FEEDBACK_VECTOR_SLOT_OTHER_TYPE',
    162       'FEEDBACK_VECTOR_SLOT_STORE_TYPE',
    163       'FEEDBACK_VECTOR_SLOT_STORE_UNUSED_TYPE',
    164       'FEEDBACK_VECTOR_TYPE',
    165       'LOAD_HANDLER_TYPE',
    166       'NOSCRIPT_SHARED_FUNCTION_INFOS_TYPE',
    167       'OPTIMIZED_CODE_LITERALS_TYPE',
    168       'OPTIMIZED_FUNCTION',
    169       'PRE_PARSED_SCOPE_DATA_TYPE',
    170       'REGEXP',
    171       'RELOC_INFO_TYPE',
    172       'SCRIPT_SOURCE_EXTERNAL_ONE_BYTE_TYPE',
    173       'SCRIPT_SOURCE_EXTERNAL_TWO_BYTE_TYPE',
    174       'SCRIPT_SOURCE_EXTERNAL_TYPE',
    175       'SCRIPT_SOURCE_NON_EXTERNAL_ONE_BYTE_TYPE',
    176       'SCRIPT_SOURCE_NON_EXTERNAL_TWO_BYTE_TYPE',
    177       'SCRIPT_TYPE',
    178       'SHARED_FUNCTION_INFO_TYPE',
    179       'SOURCE_POSITION_TABLE_TYPE',
    180       'STORE_HANDLER_TYPE',
    181       'STUB',
    182       'UNCOMPILED_DATA_WITHOUT_PRE_PARSED_SCOPE_TYPE',
    183       'UNCOMPILED_DATA_WITH_PRE_PARSED_SCOPE_TYPE',
    184       'UNCOMPILED_JS_FUNCTION_TYPE',
    185       'UNCOMPILED_SHARED_FUNCTION_INFO_TYPE'
    186     ])
    187   ],
    188   ['unclassified', new Set()],
    189 ]);
    190 
    191 // Maps category to description text that is shown in html.
    192 const CATEGORY_NAMES = new Map([
    193   ['user', 'JS'],
    194   ['system', 'Metadata'],
    195   ['code', 'Code'],
    196   ['unclassified', 'Unclassified'],
    197 ]);
    198