# Copyright 2017 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. # List of known V8 instance types. INSTANCE_TYPES = { 0: "INTERNALIZED_STRING_TYPE", 2: "EXTERNAL_INTERNALIZED_STRING_TYPE", 8: "ONE_BYTE_INTERNALIZED_STRING_TYPE", 10: "EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE", 18: "EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE", 34: "SHORT_EXTERNAL_INTERNALIZED_STRING_TYPE", 42: "SHORT_EXTERNAL_ONE_BYTE_INTERNALIZED_STRING_TYPE", 50: "SHORT_EXTERNAL_INTERNALIZED_STRING_WITH_ONE_BYTE_DATA_TYPE", 64: "STRING_TYPE", 65: "CONS_STRING_TYPE", 66: "EXTERNAL_STRING_TYPE", 67: "SLICED_STRING_TYPE", 69: "THIN_STRING_TYPE", 72: "ONE_BYTE_STRING_TYPE", 73: "CONS_ONE_BYTE_STRING_TYPE", 74: "EXTERNAL_ONE_BYTE_STRING_TYPE", 75: "SLICED_ONE_BYTE_STRING_TYPE", 77: "THIN_ONE_BYTE_STRING_TYPE", 82: "EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE", 98: "SHORT_EXTERNAL_STRING_TYPE", 106: "SHORT_EXTERNAL_ONE_BYTE_STRING_TYPE", 114: "SHORT_EXTERNAL_STRING_WITH_ONE_BYTE_DATA_TYPE", 128: "SYMBOL_TYPE", 129: "HEAP_NUMBER_TYPE", 130: "ODDBALL_TYPE", 131: "MAP_TYPE", 132: "CODE_TYPE", 133: "MUTABLE_HEAP_NUMBER_TYPE", 134: "FOREIGN_TYPE", 135: "BYTE_ARRAY_TYPE", 136: "BYTECODE_ARRAY_TYPE", 137: "FREE_SPACE_TYPE", 138: "FIXED_INT8_ARRAY_TYPE", 139: "FIXED_UINT8_ARRAY_TYPE", 140: "FIXED_INT16_ARRAY_TYPE", 141: "FIXED_UINT16_ARRAY_TYPE", 142: "FIXED_INT32_ARRAY_TYPE", 143: "FIXED_UINT32_ARRAY_TYPE", 144: "FIXED_FLOAT32_ARRAY_TYPE", 145: "FIXED_FLOAT64_ARRAY_TYPE", 146: "FIXED_UINT8_CLAMPED_ARRAY_TYPE", 147: "FIXED_DOUBLE_ARRAY_TYPE", 148: "FILLER_TYPE", 149: "ACCESSOR_INFO_TYPE", 150: "ACCESSOR_PAIR_TYPE", 151: "ACCESS_CHECK_INFO_TYPE", 152: "INTERCEPTOR_INFO_TYPE", 153: "CALL_HANDLER_INFO_TYPE", 154: "FUNCTION_TEMPLATE_INFO_TYPE", 155: "OBJECT_TEMPLATE_INFO_TYPE", 156: "ALLOCATION_SITE_TYPE", 157: "ALLOCATION_MEMENTO_TYPE", 158: "SCRIPT_TYPE", 159: "TYPE_FEEDBACK_INFO_TYPE", 160: "ALIASED_ARGUMENTS_ENTRY_TYPE", 161: "PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE", 162: "PROMISE_REACTION_JOB_INFO_TYPE", 163: "DEBUG_INFO_TYPE", 164: "BREAK_POINT_INFO_TYPE", 165: "PROTOTYPE_INFO_TYPE", 166: "TUPLE2_TYPE", 167: "TUPLE3_TYPE", 168: "CONTEXT_EXTENSION_TYPE", 169: "CONSTANT_ELEMENTS_PAIR_TYPE", 170: "MODULE_TYPE", 171: "MODULE_INFO_ENTRY_TYPE", 172: "FIXED_ARRAY_TYPE", 173: "TRANSITION_ARRAY_TYPE", 174: "SHARED_FUNCTION_INFO_TYPE", 175: "CELL_TYPE", 176: "WEAK_CELL_TYPE", 177: "PROPERTY_CELL_TYPE", 178: "JS_PROXY_TYPE", 179: "JS_GLOBAL_OBJECT_TYPE", 180: "JS_GLOBAL_PROXY_TYPE", 181: "JS_SPECIAL_API_OBJECT_TYPE", 182: "JS_VALUE_TYPE", 183: "JS_MESSAGE_OBJECT_TYPE", 184: "JS_DATE_TYPE", 185: "JS_API_OBJECT_TYPE", 186: "JS_OBJECT_TYPE", 187: "JS_ARGUMENTS_TYPE", 188: "JS_CONTEXT_EXTENSION_OBJECT_TYPE", 189: "JS_GENERATOR_OBJECT_TYPE", 190: "JS_MODULE_NAMESPACE_TYPE", 191: "JS_ARRAY_TYPE", 192: "JS_ARRAY_BUFFER_TYPE", 193: "JS_TYPED_ARRAY_TYPE", 194: "JS_DATA_VIEW_TYPE", 195: "JS_SET_TYPE", 196: "JS_MAP_TYPE", 197: "JS_SET_ITERATOR_TYPE", 198: "JS_MAP_ITERATOR_TYPE", 199: "JS_WEAK_MAP_TYPE", 200: "JS_WEAK_SET_TYPE", 201: "JS_PROMISE_CAPABILITY_TYPE", 202: "JS_PROMISE_TYPE", 203: "JS_REGEXP_TYPE", 204: "JS_ERROR_TYPE", 205: "JS_ASYNC_FROM_SYNC_ITERATOR_TYPE", 206: "JS_STRING_ITERATOR_TYPE", 207: "JS_TYPED_ARRAY_KEY_ITERATOR_TYPE", 208: "JS_FAST_ARRAY_KEY_ITERATOR_TYPE", 209: "JS_GENERIC_ARRAY_KEY_ITERATOR_TYPE", 210: "JS_UINT8_ARRAY_KEY_VALUE_ITERATOR_TYPE", 211: "JS_INT8_ARRAY_KEY_VALUE_ITERATOR_TYPE", 212: "JS_UINT16_ARRAY_KEY_VALUE_ITERATOR_TYPE", 213: "JS_INT16_ARRAY_KEY_VALUE_ITERATOR_TYPE", 214: "JS_UINT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", 215: "JS_INT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", 216: "JS_FLOAT32_ARRAY_KEY_VALUE_ITERATOR_TYPE", 217: "JS_FLOAT64_ARRAY_KEY_VALUE_ITERATOR_TYPE", 218: "JS_UINT8_CLAMPED_ARRAY_KEY_VALUE_ITERATOR_TYPE", 219: "JS_FAST_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE", 220: "JS_FAST_HOLEY_SMI_ARRAY_KEY_VALUE_ITERATOR_TYPE", 221: "JS_FAST_ARRAY_KEY_VALUE_ITERATOR_TYPE", 222: "JS_FAST_HOLEY_ARRAY_KEY_VALUE_ITERATOR_TYPE", 223: "JS_FAST_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE", 224: "JS_FAST_HOLEY_DOUBLE_ARRAY_KEY_VALUE_ITERATOR_TYPE", 225: "JS_GENERIC_ARRAY_KEY_VALUE_ITERATOR_TYPE", 226: "JS_UINT8_ARRAY_VALUE_ITERATOR_TYPE", 227: "JS_INT8_ARRAY_VALUE_ITERATOR_TYPE", 228: "JS_UINT16_ARRAY_VALUE_ITERATOR_TYPE", 229: "JS_INT16_ARRAY_VALUE_ITERATOR_TYPE", 230: "JS_UINT32_ARRAY_VALUE_ITERATOR_TYPE", 231: "JS_INT32_ARRAY_VALUE_ITERATOR_TYPE", 232: "JS_FLOAT32_ARRAY_VALUE_ITERATOR_TYPE", 233: "JS_FLOAT64_ARRAY_VALUE_ITERATOR_TYPE", 234: "JS_UINT8_CLAMPED_ARRAY_VALUE_ITERATOR_TYPE", 235: "JS_FAST_SMI_ARRAY_VALUE_ITERATOR_TYPE", 236: "JS_FAST_HOLEY_SMI_ARRAY_VALUE_ITERATOR_TYPE", 237: "JS_FAST_ARRAY_VALUE_ITERATOR_TYPE", 238: "JS_FAST_HOLEY_ARRAY_VALUE_ITERATOR_TYPE", 239: "JS_FAST_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE", 240: "JS_FAST_HOLEY_DOUBLE_ARRAY_VALUE_ITERATOR_TYPE", 241: "JS_GENERIC_ARRAY_VALUE_ITERATOR_TYPE", 242: "JS_BOUND_FUNCTION_TYPE", 243: "JS_FUNCTION_TYPE", } # List of known V8 maps. KNOWN_MAPS = { 0x02201: (137, "FreeSpaceMap"), 0x02259: (131, "MetaMap"), 0x022b1: (130, "NullMap"), 0x02309: (172, "FixedArrayMap"), 0x02361: (8, "OneByteInternalizedStringMap"), 0x023b9: (148, "OnePointerFillerMap"), 0x02411: (148, "TwoPointerFillerMap"), 0x02469: (130, "UninitializedMap"), 0x024c1: (130, "UndefinedMap"), 0x02519: (129, "HeapNumberMap"), 0x02571: (130, "TheHoleMap"), 0x025c9: (130, "BooleanMap"), 0x02621: (135, "ByteArrayMap"), 0x02679: (172, "FixedCOWArrayMap"), 0x026d1: (172, "HashTableMap"), 0x02729: (128, "SymbolMap"), 0x02781: (72, "OneByteStringMap"), 0x027d9: (172, "ScopeInfoMap"), 0x02831: (174, "SharedFunctionInfoMap"), 0x02889: (132, "CodeMap"), 0x028e1: (172, "FunctionContextMap"), 0x02939: (175, "CellMap"), 0x02991: (176, "WeakCellMap"), 0x029e9: (177, "GlobalPropertyCellMap"), 0x02a41: (134, "ForeignMap"), 0x02a99: (173, "TransitionArrayMap"), 0x02af1: (130, "ArgumentsMarkerMap"), 0x02b49: (172, "NativeContextMap"), 0x02ba1: (172, "ModuleContextMap"), 0x02bf9: (172, "EvalContextMap"), 0x02c51: (172, "ScriptContextMap"), 0x02ca9: (172, "BlockContextMap"), 0x02d01: (172, "CatchContextMap"), 0x02d59: (172, "WithContextMap"), 0x02db1: (147, "FixedDoubleArrayMap"), 0x02e09: (133, "MutableHeapNumberMap"), 0x02e61: (172, "OrderedHashTableMap"), 0x02eb9: (172, "SloppyArgumentsElementsMap"), 0x02f11: (183, "JSMessageObjectMap"), 0x02f69: (136, "BytecodeArrayMap"), 0x02fc1: (172, "ModuleInfoMap"), 0x03019: (175, "NoClosuresCellMap"), 0x03071: (175, "OneClosureCellMap"), 0x030c9: (175, "ManyClosuresCellMap"), 0x03121: (64, "StringMap"), 0x03179: (73, "ConsOneByteStringMap"), 0x031d1: (65, "ConsStringMap"), 0x03229: (77, "ThinOneByteStringMap"), 0x03281: (69, "ThinStringMap"), 0x032d9: (67, "SlicedStringMap"), 0x03331: (75, "SlicedOneByteStringMap"), 0x03389: (66, "ExternalStringMap"), 0x033e1: (82, "ExternalStringWithOneByteDataMap"), 0x03439: (74, "ExternalOneByteStringMap"), 0x03491: (98, "ShortExternalStringMap"), 0x034e9: (114, "ShortExternalStringWithOneByteDataMap"), 0x03541: (0, "InternalizedStringMap"), 0x03599: (2, "ExternalInternalizedStringMap"), 0x035f1: (18, "ExternalInternalizedStringWithOneByteDataMap"), 0x03649: (10, "ExternalOneByteInternalizedStringMap"), 0x036a1: (34, "ShortExternalInternalizedStringMap"), 0x036f9: (50, "ShortExternalInternalizedStringWithOneByteDataMap"), 0x03751: (42, "ShortExternalOneByteInternalizedStringMap"), 0x037a9: (106, "ShortExternalOneByteStringMap"), 0x03801: (172, "FeedbackVectorMap"), 0x03859: (130, "ExceptionMap"), 0x038b1: (130, "TerminationExceptionMap"), 0x03909: (130, "OptimizedOutMap"), 0x03961: (130, "StaleRegisterMap"), 0x039b9: (172, "DebugEvaluateContextMap"), 0x03a11: (172, "ScriptContextTableMap"), 0x03a69: (172, "UnseededNumberDictionaryMap"), 0x03ac1: (186, "ExternalMap"), 0x03b19: (106, "NativeSourceStringMap"), 0x03b71: (139, "FixedUint8ArrayMap"), 0x03bc9: (138, "FixedInt8ArrayMap"), 0x03c21: (141, "FixedUint16ArrayMap"), 0x03c79: (140, "FixedInt16ArrayMap"), 0x03cd1: (143, "FixedUint32ArrayMap"), 0x03d29: (142, "FixedInt32ArrayMap"), 0x03d81: (144, "FixedFloat32ArrayMap"), 0x03dd9: (145, "FixedFloat64ArrayMap"), 0x03e31: (146, "FixedUint8ClampedArrayMap"), 0x03e89: (158, "ScriptMap"), 0x03ee1: (152, "InterceptorInfoMap"), 0x03f39: (201, "JSPromiseCapabilityMap"), 0x03f91: (149, "AccessorInfoMap"), 0x03fe9: (150, "AccessorPairMap"), 0x04041: (151, "AccessCheckInfoMap"), 0x04099: (153, "CallHandlerInfoMap"), 0x040f1: (154, "FunctionTemplateInfoMap"), 0x04149: (155, "ObjectTemplateInfoMap"), 0x041a1: (156, "AllocationSiteMap"), 0x041f9: (157, "AllocationMementoMap"), 0x04251: (159, "TypeFeedbackInfoMap"), 0x042a9: (160, "AliasedArgumentsEntryMap"), 0x04301: (161, "PromiseResolveThenableJobInfoMap"), 0x04359: (162, "PromiseReactionJobInfoMap"), 0x043b1: (163, "DebugInfoMap"), 0x04409: (164, "BreakPointInfoMap"), 0x04461: (165, "PrototypeInfoMap"), 0x044b9: (166, "Tuple2Map"), 0x04511: (167, "Tuple3Map"), 0x04569: (168, "ContextExtensionMap"), 0x045c1: (169, "ConstantElementsPairMap"), 0x04619: (170, "ModuleMap"), 0x04671: (171, "ModuleInfoEntryMap"), } # List of known V8 objects. KNOWN_OBJECTS = { ("OLD_SPACE", 0x02201): "NullValue", ("OLD_SPACE", 0x02231): "EmptyDescriptorArray", ("OLD_SPACE", 0x02241): "EmptyFixedArray", ("OLD_SPACE", 0x02291): "UninitializedValue", ("OLD_SPACE", 0x02311): "UndefinedValue", ("OLD_SPACE", 0x02341): "NanValue", ("OLD_SPACE", 0x02351): "TheHoleValue", ("OLD_SPACE", 0x023a1): "HoleNanValue", ("OLD_SPACE", 0x023b1): "TrueValue", ("OLD_SPACE", 0x02421): "FalseValue", ("OLD_SPACE", 0x02471): "empty_string", ("OLD_SPACE", 0x02489): "ArgumentsMarker", ("OLD_SPACE", 0x024e1): "EmptyByteArray", ("OLD_SPACE", 0x024f1): "EmptyWeakCell", ("OLD_SPACE", 0x02509): "InfinityValue", ("OLD_SPACE", 0x02519): "MinusZeroValue", ("OLD_SPACE", 0x02529): "MinusInfinityValue", ("OLD_SPACE", 0x04979): "EmptyScopeInfo", ("OLD_SPACE", 0x04989): "Exception", ("OLD_SPACE", 0x049e1): "TerminationException", ("OLD_SPACE", 0x04a41): "OptimizedOut", ("OLD_SPACE", 0x04a99): "StaleRegister", ("OLD_SPACE", 0x04af1): "EmptyFixedUint8Array", ("OLD_SPACE", 0x04b11): "EmptyFixedInt8Array", ("OLD_SPACE", 0x04b31): "EmptyFixedUint16Array", ("OLD_SPACE", 0x04b51): "EmptyFixedInt16Array", ("OLD_SPACE", 0x04b71): "EmptyFixedUint32Array", ("OLD_SPACE", 0x04b91): "EmptyFixedInt32Array", ("OLD_SPACE", 0x04bb1): "EmptyFixedFloat32Array", ("OLD_SPACE", 0x04bd1): "EmptyFixedFloat64Array", ("OLD_SPACE", 0x04bf1): "EmptyFixedUint8ClampedArray", ("OLD_SPACE", 0x04c11): "EmptyScript", ("OLD_SPACE", 0x04c99): "UndefinedCell", ("OLD_SPACE", 0x04ca9): "EmptySloppyArgumentsElements", ("OLD_SPACE", 0x04cc9): "EmptySlowElementDictionary", ("OLD_SPACE", 0x04d19): "EmptyPropertyCell", ("OLD_SPACE", 0x04d39): "ArrayProtector", ("OLD_SPACE", 0x04d59): "IsConcatSpreadableProtector", ("OLD_SPACE", 0x04d69): "SpeciesProtector", ("OLD_SPACE", 0x04d79): "StringLengthProtector", ("OLD_SPACE", 0x04d99): "FastArrayIterationProtector", ("OLD_SPACE", 0x04da9): "ArrayIteratorProtector", ("OLD_SPACE", 0x04dc9): "ArrayBufferNeuteringProtector", ("OLD_SPACE", 0x04de9): "NumberStringCache", ("OLD_SPACE", 0x05df9): "SingleCharacterStringCache", ("OLD_SPACE", 0x06669): "StringSplitCache", ("OLD_SPACE", 0x06e79): "RegExpMultipleCache", ("OLD_SPACE", 0x07689): "NativesSourceCache", ("OLD_SPACE", 0x07931): "ExtraNativesSourceCache", ("OLD_SPACE", 0x07969): "ExperimentalExtraNativesSourceCache", ("OLD_SPACE", 0x07981): "EmptyPropertiesDictionary", ("OLD_SPACE", 0x079d1): "ScriptList", ("OLD_SPACE", 0x22019): "CodeStubs", ("OLD_SPACE", 0x2f199): "WeakObjectToCodeTable", ("OLD_SPACE", 0x2f3c1): "WeakNewSpaceObjectToCodeList", ("OLD_SPACE", 0x2f451): "NoScriptSharedFunctionInfos", ("OLD_SPACE", 0x4abd9): "MessageListeners", ("OLD_SPACE", 0x4abf9): "NoOpInterceptorInfo", ("OLD_SPACE", 0x531d1): "StringTable", ("CODE_SPACE", 0x2cde1): "JsEntryCode", ("CODE_SPACE", 0x31241): "JsConstructEntryCode", } # List of known V8 Frame Markers. FRAME_MARKERS = ( "ENTRY", "ENTRY_CONSTRUCT", "EXIT", "JAVA_SCRIPT", "OPTIMIZED", "WASM_COMPILED", "WASM_TO_JS", "JS_TO_WASM", "WASM_INTERPRETER_ENTRY", "INTERPRETED", "STUB", "STUB_FAILURE_TRAMPOLINE", "INTERNAL", "CONSTRUCT", "ARGUMENTS_ADAPTOR", "BUILTIN", "BUILTIN_EXIT", )