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.
6const 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.
192const CATEGORY_NAMES = new Map([
193  ['user', 'JS'],
194  ['system', 'Metadata'],
195  ['code', 'Code'],
196  ['unclassified', 'Unclassified'],
197]);
198