[cleanup] Make PropertyDescriptorObject inherit from Struct
There is no particular reason that PropertyDescriptorObject should be a subclass of FixedArray. By using a separate struct type, we get better generated accessor functions, automatic verification, and runtime type info, plus we save four bytes per instance. Change-Id: If076782832aa9398806794e4ee6d019aea2f92b7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1999463 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Cr-Commit-Position: refs/heads/master@{#65756}
This commit is contained in:
parent
00cd6e0d0e
commit
1077308c39
1
BUILD.gn
1
BUILD.gn
@ -1085,6 +1085,7 @@ torque_files = [
|
||||
"src/objects/promise.tq",
|
||||
"src/objects/property-array.tq",
|
||||
"src/objects/property-cell.tq",
|
||||
"src/objects/property-descriptor-object.tq",
|
||||
"src/objects/prototype-info.tq",
|
||||
"src/objects/regexp-match-info.tq",
|
||||
"src/objects/scope-info.tq",
|
||||
|
@ -34,7 +34,7 @@ class ObjectBuiltinsAssembler : public CodeStubAssembler {
|
||||
Handle<Name> name, TNode<Object> value,
|
||||
Label* bailout);
|
||||
TNode<JSObject> FromPropertyDescriptor(TNode<Context> context,
|
||||
TNode<FixedArray> desc);
|
||||
TNode<PropertyDescriptorObject> desc);
|
||||
TNode<JSObject> FromPropertyDetails(TNode<Context> context,
|
||||
TNode<Object> raw_value,
|
||||
TNode<Word32T> details,
|
||||
@ -1369,10 +1369,10 @@ TF_BUILTIN(ObjectGetOwnPropertyDescriptor, ObjectBuiltinsAssembler) {
|
||||
|
||||
GotoIf(IsUndefined(desc), &return_undefined);
|
||||
|
||||
TNode<FixedArray> desc_array = CAST(desc);
|
||||
TNode<PropertyDescriptorObject> desc_object = CAST(desc);
|
||||
|
||||
// 4. Return FromPropertyDescriptor(desc).
|
||||
TNode<JSObject> js_desc = FromPropertyDescriptor(context, desc_array);
|
||||
TNode<JSObject> js_desc = FromPropertyDescriptor(context, desc_object);
|
||||
args.PopAndReturn(js_desc);
|
||||
}
|
||||
BIND(&return_undefined);
|
||||
@ -1392,7 +1392,7 @@ void ObjectBuiltinsAssembler::AddToDictionaryIf(
|
||||
}
|
||||
|
||||
TNode<JSObject> ObjectBuiltinsAssembler::FromPropertyDescriptor(
|
||||
TNode<Context> context, TNode<FixedArray> desc) {
|
||||
TNode<Context> context, TNode<PropertyDescriptorObject> desc) {
|
||||
TVARIABLE(JSObject, js_descriptor);
|
||||
|
||||
TNode<Int32T> flags = LoadAndUntagToWord32ObjectField(
|
||||
|
@ -274,6 +274,7 @@ Type::bitset BitsetType::Lub(const MapRefLike& map) {
|
||||
case ACCESSOR_PAIR_TYPE:
|
||||
case EMBEDDER_DATA_ARRAY_TYPE:
|
||||
case FIXED_ARRAY_TYPE:
|
||||
case PROPERTY_DESCRIPTOR_OBJECT_TYPE:
|
||||
case HASH_TABLE_TYPE:
|
||||
case ORDERED_HASH_MAP_TYPE:
|
||||
case ORDERED_HASH_SET_TYPE:
|
||||
|
@ -62,6 +62,7 @@
|
||||
#include "src/objects/module-inl.h"
|
||||
#include "src/objects/oddball-inl.h"
|
||||
#include "src/objects/promise-inl.h"
|
||||
#include "src/objects/property-descriptor-object-inl.h"
|
||||
#include "src/objects/stack-frame-info-inl.h"
|
||||
#include "src/objects/struct-inl.h"
|
||||
#include "src/objects/template-objects-inl.h"
|
||||
|
@ -58,6 +58,7 @@
|
||||
#include "src/objects/module-inl.h"
|
||||
#include "src/objects/oddball-inl.h"
|
||||
#include "src/objects/promise-inl.h"
|
||||
#include "src/objects/property-descriptor-object-inl.h"
|
||||
#include "src/objects/stack-frame-info-inl.h"
|
||||
#include "src/objects/struct-inl.h"
|
||||
#include "src/objects/template-objects-inl.h"
|
||||
|
@ -51,6 +51,7 @@
|
||||
#include "src/objects/microtask-inl.h"
|
||||
#include "src/objects/module-inl.h"
|
||||
#include "src/objects/promise-inl.h"
|
||||
#include "src/objects/property-descriptor-object-inl.h"
|
||||
#include "src/objects/scope-info.h"
|
||||
#include "src/objects/stack-frame-info-inl.h"
|
||||
#include "src/objects/struct-inl.h"
|
||||
@ -706,6 +707,17 @@ Handle<AccessorPair> Factory::NewAccessorPair() {
|
||||
return accessors;
|
||||
}
|
||||
|
||||
Handle<PropertyDescriptorObject> Factory::NewPropertyDescriptorObject() {
|
||||
Handle<PropertyDescriptorObject> object =
|
||||
Handle<PropertyDescriptorObject>::cast(
|
||||
NewStruct(PROPERTY_DESCRIPTOR_OBJECT_TYPE, AllocationType::kYoung));
|
||||
object->set_flags(Smi::zero());
|
||||
object->set_value(*the_hole_value(), SKIP_WRITE_BARRIER);
|
||||
object->set_get(*the_hole_value(), SKIP_WRITE_BARRIER);
|
||||
object->set_set(*the_hole_value(), SKIP_WRITE_BARRIER);
|
||||
return object;
|
||||
}
|
||||
|
||||
// Internalized strings are created in the old generation (data space).
|
||||
Handle<String> Factory::InternalizeUtf8String(
|
||||
const Vector<const char>& string) {
|
||||
|
@ -225,6 +225,9 @@ class V8_EXPORT_PRIVATE Factory {
|
||||
// Create a pre-tenured empty AccessorPair.
|
||||
Handle<AccessorPair> NewAccessorPair();
|
||||
|
||||
// Create a new PropertyDescriptorObject struct.
|
||||
Handle<PropertyDescriptorObject> NewPropertyDescriptorObject();
|
||||
|
||||
// Finds the internalized copy for string in the string table.
|
||||
// If not found, a new string is added to the table and returned.
|
||||
Handle<String> InternalizeUtf8String(const Vector<const char>& str);
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include "src/objects/oddball-inl.h"
|
||||
#include "src/objects/ordered-hash-table.h"
|
||||
#include "src/objects/promise.h"
|
||||
#include "src/objects/property-descriptor-object.h"
|
||||
#include "src/objects/script.h"
|
||||
#include "src/objects/shared-function-info.h"
|
||||
#include "src/objects/smi.h"
|
||||
|
@ -210,13 +210,12 @@ V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
|
||||
InstanceType instance_type);
|
||||
|
||||
// List of object types that have a single unique instance type.
|
||||
#define INSTANCE_TYPE_CHECKERS_SINGLE(V) \
|
||||
TORQUE_INSTANCE_CHECKERS_SINGLE_FULLY_DEFINED(V) \
|
||||
TORQUE_INSTANCE_CHECKERS_SINGLE_ONLY_DECLARED(V) \
|
||||
V(BigInt, BIGINT_TYPE) \
|
||||
V(CoverageInfo, FIXED_ARRAY_TYPE) \
|
||||
V(FixedArrayExact, FIXED_ARRAY_TYPE) \
|
||||
V(PropertyDescriptorObject, FIXED_ARRAY_TYPE)
|
||||
#define INSTANCE_TYPE_CHECKERS_SINGLE(V) \
|
||||
TORQUE_INSTANCE_CHECKERS_SINGLE_FULLY_DEFINED(V) \
|
||||
TORQUE_INSTANCE_CHECKERS_SINGLE_ONLY_DECLARED(V) \
|
||||
V(BigInt, BIGINT_TYPE) \
|
||||
V(CoverageInfo, FIXED_ARRAY_TYPE) \
|
||||
V(FixedArrayExact, FIXED_ARRAY_TYPE)
|
||||
|
||||
#define INSTANCE_TYPE_CHECKERS_RANGE(V) \
|
||||
TORQUE_INSTANCE_CHECKERS_RANGE_FULLY_DEFINED(V) \
|
||||
|
@ -190,7 +190,6 @@ class ZoneForwardList;
|
||||
V(PromiseReactionJobTask) \
|
||||
V(PropertyArray) \
|
||||
V(PropertyCell) \
|
||||
V(PropertyDescriptorObject) \
|
||||
V(RegExpMatchInfo) \
|
||||
V(ScopeInfo) \
|
||||
V(ScriptContextTable) \
|
||||
|
@ -138,6 +138,8 @@ namespace internal {
|
||||
V(_, INTERPRETER_DATA_TYPE, InterpreterData, interpreter_data) \
|
||||
V(_, PROMISE_CAPABILITY_TYPE, PromiseCapability, promise_capability) \
|
||||
V(_, PROMISE_REACTION_TYPE, PromiseReaction, promise_reaction) \
|
||||
V(_, PROPERTY_DESCRIPTOR_OBJECT_TYPE, PropertyDescriptorObject, \
|
||||
property_descriptor_object) \
|
||||
V(_, PROTOTYPE_INFO_TYPE, PrototypeInfo, prototype_info) \
|
||||
V(_, SCRIPT_TYPE, Script, script) \
|
||||
V(_, SOURCE_TEXT_MODULE_INFO_ENTRY_TYPE, SourceTextModuleInfoEntry, \
|
||||
|
@ -98,6 +98,7 @@
|
||||
#include "src/objects/microtask-inl.h"
|
||||
#include "src/objects/module-inl.h"
|
||||
#include "src/objects/promise-inl.h"
|
||||
#include "src/objects/property-descriptor-object-inl.h"
|
||||
#include "src/objects/property-descriptor.h"
|
||||
#include "src/objects/prototype.h"
|
||||
#include "src/objects/slots-atomic-inl.h"
|
||||
|
@ -167,6 +167,7 @@
|
||||
// - StackFrameInfo
|
||||
// - StackTraceFrame
|
||||
// - CodeCache
|
||||
// - PropertyDescriptorObject
|
||||
// - PrototypeInfo
|
||||
// - Microtask
|
||||
// - CallbackTask
|
||||
|
@ -14,8 +14,7 @@
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
OBJECT_CONSTRUCTORS_IMPL(PropertyDescriptorObject, FixedArray)
|
||||
CAST_ACCESSOR(PropertyDescriptorObject)
|
||||
TQ_OBJECT_CONSTRUCTORS_IMPL(PropertyDescriptorObject)
|
||||
}
|
||||
} // namespace v8
|
||||
|
||||
|
@ -6,8 +6,7 @@
|
||||
#define V8_OBJECTS_PROPERTY_DESCRIPTOR_OBJECT_H_
|
||||
|
||||
#include "src/base/bit-field.h"
|
||||
#include "src/objects/fixed-array.h"
|
||||
#include "src/objects/objects.h"
|
||||
#include "src/objects/struct.h"
|
||||
|
||||
// Has to be the last include (doesn't have include guards):
|
||||
#include "src/objects/object-macros.h"
|
||||
@ -15,7 +14,9 @@
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
class PropertyDescriptorObject : public FixedArray {
|
||||
class PropertyDescriptorObject
|
||||
: public TorqueGeneratedPropertyDescriptorObject<PropertyDescriptorObject,
|
||||
Struct> {
|
||||
public:
|
||||
#define FLAGS_BIT_FIELDS(V, _) \
|
||||
V(IsEnumerableBit, bool, 1, _) \
|
||||
@ -31,10 +32,6 @@ class PropertyDescriptorObject : public FixedArray {
|
||||
DEFINE_BIT_FIELDS(FLAGS_BIT_FIELDS)
|
||||
#undef FLAGS_BIT_FIELDS
|
||||
|
||||
enum { kFlagsIndex, kValueIndex, kGetIndex, kSetIndex, kLength };
|
||||
|
||||
DECL_CAST(PropertyDescriptorObject)
|
||||
|
||||
static const int kRegularAccessorPropertyBits =
|
||||
HasEnumerableBit::kMask | HasConfigurableBit::kMask | HasGetBit::kMask |
|
||||
HasSetBit::kMask;
|
||||
@ -48,16 +45,7 @@ class PropertyDescriptorObject : public FixedArray {
|
||||
HasWritableBit::kMask | HasValueBit::kMask |
|
||||
HasGetBit::kMask | HasSetBit::kMask;
|
||||
|
||||
static const int kValueOffset =
|
||||
FixedArray::OffsetOfElementAt(PropertyDescriptorObject::kValueIndex);
|
||||
static const int kFlagsOffset =
|
||||
FixedArray::OffsetOfElementAt(PropertyDescriptorObject::kFlagsIndex);
|
||||
static const int kGetOffset =
|
||||
FixedArray::OffsetOfElementAt(PropertyDescriptorObject::kGetIndex);
|
||||
static const int kSetOffset =
|
||||
FixedArray::OffsetOfElementAt(PropertyDescriptorObject::kSetIndex);
|
||||
|
||||
OBJECT_CONSTRUCTORS(PropertyDescriptorObject, FixedArray);
|
||||
TQ_OBJECT_CONSTRUCTORS(PropertyDescriptorObject)
|
||||
};
|
||||
|
||||
} // namespace internal
|
||||
|
14
src/objects/property-descriptor-object.tq
Normal file
14
src/objects/property-descriptor-object.tq
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2019 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.
|
||||
|
||||
#include 'src/objects/property-descriptor-object.h'
|
||||
|
||||
@generateCppClass
|
||||
@generatePrint
|
||||
extern class PropertyDescriptorObject extends Struct {
|
||||
flags: Smi;
|
||||
value: JSAny|TheHole;
|
||||
get: JSAny|TheHole;
|
||||
set: JSAny|TheHole;
|
||||
}
|
@ -341,8 +341,8 @@ void PropertyDescriptor::CompletePropertyDescriptor(Isolate* isolate,
|
||||
|
||||
Handle<PropertyDescriptorObject> PropertyDescriptor::ToPropertyDescriptorObject(
|
||||
Isolate* isolate) {
|
||||
Handle<PropertyDescriptorObject> obj = Handle<PropertyDescriptorObject>::cast(
|
||||
isolate->factory()->NewFixedArray(PropertyDescriptorObject::kLength));
|
||||
Handle<PropertyDescriptorObject> obj =
|
||||
isolate->factory()->NewPropertyDescriptorObject();
|
||||
|
||||
int flags =
|
||||
PropertyDescriptorObject::IsEnumerableBit::encode(enumerable_) |
|
||||
@ -355,14 +355,11 @@ Handle<PropertyDescriptorObject> PropertyDescriptor::ToPropertyDescriptorObject(
|
||||
PropertyDescriptorObject::HasGetBit::encode(has_get()) |
|
||||
PropertyDescriptorObject::HasSetBit::encode(has_set());
|
||||
|
||||
obj->set(PropertyDescriptorObject::kFlagsIndex, Smi::FromInt(flags));
|
||||
obj->set_flags(Smi::FromInt(flags));
|
||||
|
||||
obj->set(PropertyDescriptorObject::kValueIndex,
|
||||
has_value() ? *value_ : ReadOnlyRoots(isolate).the_hole_value());
|
||||
obj->set(PropertyDescriptorObject::kGetIndex,
|
||||
has_get() ? *get_ : ReadOnlyRoots(isolate).the_hole_value());
|
||||
obj->set(PropertyDescriptorObject::kSetIndex,
|
||||
has_set() ? *set_ : ReadOnlyRoots(isolate).the_hole_value());
|
||||
if (has_value()) obj->set_value(*value_);
|
||||
if (has_get()) obj->set_get(*get_);
|
||||
if (has_set()) obj->set_set(*set_);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
@ -3584,6 +3584,8 @@ void ImplementationVisitor::GenerateClassDefinitions(
|
||||
implementation << "#include \"src/objects/microtask-inl.h\"\n";
|
||||
implementation << "#include \"src/objects/module-inl.h\"\n";
|
||||
implementation << "#include \"src/objects/promise-inl.h\"\n";
|
||||
implementation
|
||||
<< "#include \"src/objects/property-descriptor-object-inl.h\"\n";
|
||||
implementation << "#include \"src/objects/stack-frame-info-inl.h\"\n";
|
||||
implementation << "#include \"src/objects/struct-inl.h\"\n";
|
||||
implementation << "#include \"src/objects/template-objects-inl.h\"\n\n";
|
||||
|
@ -64,78 +64,79 @@ INSTANCE_TYPES = {
|
||||
100: "INTERPRETER_DATA_TYPE",
|
||||
101: "PROMISE_CAPABILITY_TYPE",
|
||||
102: "PROMISE_REACTION_TYPE",
|
||||
103: "PROTOTYPE_INFO_TYPE",
|
||||
104: "SCRIPT_TYPE",
|
||||
105: "SMI_BOX_TYPE",
|
||||
106: "SMI_PAIR_TYPE",
|
||||
107: "SORT_STATE_TYPE",
|
||||
108: "SOURCE_TEXT_MODULE_INFO_ENTRY_TYPE",
|
||||
109: "STACK_FRAME_INFO_TYPE",
|
||||
110: "STACK_TRACE_FRAME_TYPE",
|
||||
111: "TEMPLATE_OBJECT_DESCRIPTION_TYPE",
|
||||
112: "TUPLE2_TYPE",
|
||||
113: "WASM_CAPI_FUNCTION_DATA_TYPE",
|
||||
114: "WASM_DEBUG_INFO_TYPE",
|
||||
115: "WASM_EXCEPTION_TAG_TYPE",
|
||||
116: "WASM_EXPORTED_FUNCTION_DATA_TYPE",
|
||||
117: "WASM_INDIRECT_FUNCTION_TABLE_TYPE",
|
||||
118: "WASM_JS_FUNCTION_DATA_TYPE",
|
||||
119: "FIXED_ARRAY_TYPE",
|
||||
120: "HASH_TABLE_TYPE",
|
||||
121: "EPHEMERON_HASH_TABLE_TYPE",
|
||||
122: "GLOBAL_DICTIONARY_TYPE",
|
||||
123: "NAME_DICTIONARY_TYPE",
|
||||
124: "NUMBER_DICTIONARY_TYPE",
|
||||
125: "ORDERED_HASH_MAP_TYPE",
|
||||
126: "ORDERED_HASH_SET_TYPE",
|
||||
127: "ORDERED_NAME_DICTIONARY_TYPE",
|
||||
128: "SIMPLE_NUMBER_DICTIONARY_TYPE",
|
||||
129: "STRING_TABLE_TYPE",
|
||||
130: "CLOSURE_FEEDBACK_CELL_ARRAY_TYPE",
|
||||
131: "OBJECT_BOILERPLATE_DESCRIPTION_TYPE",
|
||||
132: "SCOPE_INFO_TYPE",
|
||||
133: "SCRIPT_CONTEXT_TABLE_TYPE",
|
||||
134: "BYTE_ARRAY_TYPE",
|
||||
135: "BYTECODE_ARRAY_TYPE",
|
||||
136: "FIXED_DOUBLE_ARRAY_TYPE",
|
||||
137: "AWAIT_CONTEXT_TYPE",
|
||||
138: "BLOCK_CONTEXT_TYPE",
|
||||
139: "CATCH_CONTEXT_TYPE",
|
||||
140: "DEBUG_EVALUATE_CONTEXT_TYPE",
|
||||
141: "EVAL_CONTEXT_TYPE",
|
||||
142: "FUNCTION_CONTEXT_TYPE",
|
||||
143: "MODULE_CONTEXT_TYPE",
|
||||
144: "NATIVE_CONTEXT_TYPE",
|
||||
145: "SCRIPT_CONTEXT_TYPE",
|
||||
146: "WITH_CONTEXT_TYPE",
|
||||
147: "SMALL_ORDERED_HASH_MAP_TYPE",
|
||||
148: "SMALL_ORDERED_HASH_SET_TYPE",
|
||||
149: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
|
||||
150: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
|
||||
151: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
|
||||
152: "WEAK_FIXED_ARRAY_TYPE",
|
||||
153: "TRANSITION_ARRAY_TYPE",
|
||||
154: "CELL_TYPE",
|
||||
155: "CODE_TYPE",
|
||||
156: "CODE_DATA_CONTAINER_TYPE",
|
||||
157: "DESCRIPTOR_ARRAY_TYPE",
|
||||
158: "EMBEDDER_DATA_ARRAY_TYPE",
|
||||
159: "FEEDBACK_METADATA_TYPE",
|
||||
160: "FEEDBACK_VECTOR_TYPE",
|
||||
161: "FILLER_TYPE",
|
||||
162: "FREE_SPACE_TYPE",
|
||||
163: "MAP_TYPE",
|
||||
164: "PREPARSE_DATA_TYPE",
|
||||
165: "PROPERTY_ARRAY_TYPE",
|
||||
166: "PROPERTY_CELL_TYPE",
|
||||
167: "SHARED_FUNCTION_INFO_TYPE",
|
||||
168: "WEAK_ARRAY_LIST_TYPE",
|
||||
169: "WEAK_CELL_TYPE",
|
||||
170: "JS_PROXY_TYPE",
|
||||
103: "PROPERTY_DESCRIPTOR_OBJECT_TYPE",
|
||||
104: "PROTOTYPE_INFO_TYPE",
|
||||
105: "SCRIPT_TYPE",
|
||||
106: "SMI_BOX_TYPE",
|
||||
107: "SMI_PAIR_TYPE",
|
||||
108: "SORT_STATE_TYPE",
|
||||
109: "SOURCE_TEXT_MODULE_INFO_ENTRY_TYPE",
|
||||
110: "STACK_FRAME_INFO_TYPE",
|
||||
111: "STACK_TRACE_FRAME_TYPE",
|
||||
112: "TEMPLATE_OBJECT_DESCRIPTION_TYPE",
|
||||
113: "TUPLE2_TYPE",
|
||||
114: "WASM_CAPI_FUNCTION_DATA_TYPE",
|
||||
115: "WASM_DEBUG_INFO_TYPE",
|
||||
116: "WASM_EXCEPTION_TAG_TYPE",
|
||||
117: "WASM_EXPORTED_FUNCTION_DATA_TYPE",
|
||||
118: "WASM_INDIRECT_FUNCTION_TABLE_TYPE",
|
||||
119: "WASM_JS_FUNCTION_DATA_TYPE",
|
||||
120: "FIXED_ARRAY_TYPE",
|
||||
121: "HASH_TABLE_TYPE",
|
||||
122: "EPHEMERON_HASH_TABLE_TYPE",
|
||||
123: "GLOBAL_DICTIONARY_TYPE",
|
||||
124: "NAME_DICTIONARY_TYPE",
|
||||
125: "NUMBER_DICTIONARY_TYPE",
|
||||
126: "ORDERED_HASH_MAP_TYPE",
|
||||
127: "ORDERED_HASH_SET_TYPE",
|
||||
128: "ORDERED_NAME_DICTIONARY_TYPE",
|
||||
129: "SIMPLE_NUMBER_DICTIONARY_TYPE",
|
||||
130: "STRING_TABLE_TYPE",
|
||||
131: "CLOSURE_FEEDBACK_CELL_ARRAY_TYPE",
|
||||
132: "OBJECT_BOILERPLATE_DESCRIPTION_TYPE",
|
||||
133: "SCOPE_INFO_TYPE",
|
||||
134: "SCRIPT_CONTEXT_TABLE_TYPE",
|
||||
135: "BYTE_ARRAY_TYPE",
|
||||
136: "BYTECODE_ARRAY_TYPE",
|
||||
137: "FIXED_DOUBLE_ARRAY_TYPE",
|
||||
138: "AWAIT_CONTEXT_TYPE",
|
||||
139: "BLOCK_CONTEXT_TYPE",
|
||||
140: "CATCH_CONTEXT_TYPE",
|
||||
141: "DEBUG_EVALUATE_CONTEXT_TYPE",
|
||||
142: "EVAL_CONTEXT_TYPE",
|
||||
143: "FUNCTION_CONTEXT_TYPE",
|
||||
144: "MODULE_CONTEXT_TYPE",
|
||||
145: "NATIVE_CONTEXT_TYPE",
|
||||
146: "SCRIPT_CONTEXT_TYPE",
|
||||
147: "WITH_CONTEXT_TYPE",
|
||||
148: "SMALL_ORDERED_HASH_MAP_TYPE",
|
||||
149: "SMALL_ORDERED_HASH_SET_TYPE",
|
||||
150: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
|
||||
151: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
|
||||
152: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
|
||||
153: "WEAK_FIXED_ARRAY_TYPE",
|
||||
154: "TRANSITION_ARRAY_TYPE",
|
||||
155: "CELL_TYPE",
|
||||
156: "CODE_TYPE",
|
||||
157: "CODE_DATA_CONTAINER_TYPE",
|
||||
158: "DESCRIPTOR_ARRAY_TYPE",
|
||||
159: "EMBEDDER_DATA_ARRAY_TYPE",
|
||||
160: "FEEDBACK_METADATA_TYPE",
|
||||
161: "FEEDBACK_VECTOR_TYPE",
|
||||
162: "FILLER_TYPE",
|
||||
163: "FREE_SPACE_TYPE",
|
||||
164: "MAP_TYPE",
|
||||
165: "PREPARSE_DATA_TYPE",
|
||||
166: "PROPERTY_ARRAY_TYPE",
|
||||
167: "PROPERTY_CELL_TYPE",
|
||||
168: "SHARED_FUNCTION_INFO_TYPE",
|
||||
169: "WEAK_ARRAY_LIST_TYPE",
|
||||
170: "WEAK_CELL_TYPE",
|
||||
171: "JS_PROXY_TYPE",
|
||||
1057: "JS_OBJECT_TYPE",
|
||||
171: "JS_GLOBAL_OBJECT_TYPE",
|
||||
172: "JS_GLOBAL_PROXY_TYPE",
|
||||
173: "JS_MODULE_NAMESPACE_TYPE",
|
||||
172: "JS_GLOBAL_OBJECT_TYPE",
|
||||
173: "JS_GLOBAL_PROXY_TYPE",
|
||||
174: "JS_MODULE_NAMESPACE_TYPE",
|
||||
1040: "JS_SPECIAL_API_OBJECT_TYPE",
|
||||
1041: "JS_PRIMITIVE_WRAPPER_TYPE",
|
||||
1042: "JS_MAP_KEY_ITERATOR_TYPE",
|
||||
@ -192,77 +193,77 @@ INSTANCE_TYPES = {
|
||||
|
||||
# List of known V8 maps.
|
||||
KNOWN_MAPS = {
|
||||
("read_only_space", 0x00121): (162, "FreeSpaceMap"),
|
||||
("read_only_space", 0x00149): (163, "MetaMap"),
|
||||
("read_only_space", 0x00121): (163, "FreeSpaceMap"),
|
||||
("read_only_space", 0x00149): (164, "MetaMap"),
|
||||
("read_only_space", 0x0018d): (67, "NullMap"),
|
||||
("read_only_space", 0x001c5): (157, "DescriptorArrayMap"),
|
||||
("read_only_space", 0x001f5): (152, "WeakFixedArrayMap"),
|
||||
("read_only_space", 0x0021d): (161, "OnePointerFillerMap"),
|
||||
("read_only_space", 0x00245): (161, "TwoPointerFillerMap"),
|
||||
("read_only_space", 0x001c5): (158, "DescriptorArrayMap"),
|
||||
("read_only_space", 0x001f5): (153, "WeakFixedArrayMap"),
|
||||
("read_only_space", 0x0021d): (162, "OnePointerFillerMap"),
|
||||
("read_only_space", 0x00245): (162, "TwoPointerFillerMap"),
|
||||
("read_only_space", 0x00289): (67, "UninitializedMap"),
|
||||
("read_only_space", 0x002cd): (8, "OneByteInternalizedStringMap"),
|
||||
("read_only_space", 0x00329): (67, "UndefinedMap"),
|
||||
("read_only_space", 0x0035d): (66, "HeapNumberMap"),
|
||||
("read_only_space", 0x003a1): (67, "TheHoleMap"),
|
||||
("read_only_space", 0x00401): (67, "BooleanMap"),
|
||||
("read_only_space", 0x00489): (134, "ByteArrayMap"),
|
||||
("read_only_space", 0x004b1): (119, "FixedArrayMap"),
|
||||
("read_only_space", 0x004d9): (119, "FixedCOWArrayMap"),
|
||||
("read_only_space", 0x00501): (120, "HashTableMap"),
|
||||
("read_only_space", 0x00489): (135, "ByteArrayMap"),
|
||||
("read_only_space", 0x004b1): (120, "FixedArrayMap"),
|
||||
("read_only_space", 0x004d9): (120, "FixedCOWArrayMap"),
|
||||
("read_only_space", 0x00501): (121, "HashTableMap"),
|
||||
("read_only_space", 0x00529): (64, "SymbolMap"),
|
||||
("read_only_space", 0x00551): (40, "OneByteStringMap"),
|
||||
("read_only_space", 0x00579): (132, "ScopeInfoMap"),
|
||||
("read_only_space", 0x005a1): (167, "SharedFunctionInfoMap"),
|
||||
("read_only_space", 0x005c9): (155, "CodeMap"),
|
||||
("read_only_space", 0x005f1): (154, "CellMap"),
|
||||
("read_only_space", 0x00619): (166, "GlobalPropertyCellMap"),
|
||||
("read_only_space", 0x00579): (133, "ScopeInfoMap"),
|
||||
("read_only_space", 0x005a1): (168, "SharedFunctionInfoMap"),
|
||||
("read_only_space", 0x005c9): (156, "CodeMap"),
|
||||
("read_only_space", 0x005f1): (155, "CellMap"),
|
||||
("read_only_space", 0x00619): (167, "GlobalPropertyCellMap"),
|
||||
("read_only_space", 0x00641): (70, "ForeignMap"),
|
||||
("read_only_space", 0x00669): (153, "TransitionArrayMap"),
|
||||
("read_only_space", 0x00669): (154, "TransitionArrayMap"),
|
||||
("read_only_space", 0x00691): (45, "ThinOneByteStringMap"),
|
||||
("read_only_space", 0x006b9): (160, "FeedbackVectorMap"),
|
||||
("read_only_space", 0x006b9): (161, "FeedbackVectorMap"),
|
||||
("read_only_space", 0x0070d): (67, "ArgumentsMarkerMap"),
|
||||
("read_only_space", 0x0076d): (67, "ExceptionMap"),
|
||||
("read_only_space", 0x007c9): (67, "TerminationExceptionMap"),
|
||||
("read_only_space", 0x00831): (67, "OptimizedOutMap"),
|
||||
("read_only_space", 0x00891): (67, "StaleRegisterMap"),
|
||||
("read_only_space", 0x008d5): (133, "ScriptContextTableMap"),
|
||||
("read_only_space", 0x008fd): (130, "ClosureFeedbackCellArrayMap"),
|
||||
("read_only_space", 0x00925): (159, "FeedbackMetadataArrayMap"),
|
||||
("read_only_space", 0x0094d): (119, "ArrayListMap"),
|
||||
("read_only_space", 0x008d5): (134, "ScriptContextTableMap"),
|
||||
("read_only_space", 0x008fd): (131, "ClosureFeedbackCellArrayMap"),
|
||||
("read_only_space", 0x00925): (160, "FeedbackMetadataArrayMap"),
|
||||
("read_only_space", 0x0094d): (120, "ArrayListMap"),
|
||||
("read_only_space", 0x00975): (65, "BigIntMap"),
|
||||
("read_only_space", 0x0099d): (131, "ObjectBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x009c5): (135, "BytecodeArrayMap"),
|
||||
("read_only_space", 0x009ed): (156, "CodeDataContainerMap"),
|
||||
("read_only_space", 0x00a15): (136, "FixedDoubleArrayMap"),
|
||||
("read_only_space", 0x00a3d): (122, "GlobalDictionaryMap"),
|
||||
("read_only_space", 0x0099d): (132, "ObjectBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x009c5): (136, "BytecodeArrayMap"),
|
||||
("read_only_space", 0x009ed): (157, "CodeDataContainerMap"),
|
||||
("read_only_space", 0x00a15): (137, "FixedDoubleArrayMap"),
|
||||
("read_only_space", 0x00a3d): (123, "GlobalDictionaryMap"),
|
||||
("read_only_space", 0x00a65): (96, "ManyClosuresCellMap"),
|
||||
("read_only_space", 0x00a8d): (119, "ModuleInfoMap"),
|
||||
("read_only_space", 0x00ab5): (123, "NameDictionaryMap"),
|
||||
("read_only_space", 0x00a8d): (120, "ModuleInfoMap"),
|
||||
("read_only_space", 0x00ab5): (124, "NameDictionaryMap"),
|
||||
("read_only_space", 0x00add): (96, "NoClosuresCellMap"),
|
||||
("read_only_space", 0x00b05): (124, "NumberDictionaryMap"),
|
||||
("read_only_space", 0x00b05): (125, "NumberDictionaryMap"),
|
||||
("read_only_space", 0x00b2d): (96, "OneClosureCellMap"),
|
||||
("read_only_space", 0x00b55): (125, "OrderedHashMapMap"),
|
||||
("read_only_space", 0x00b7d): (126, "OrderedHashSetMap"),
|
||||
("read_only_space", 0x00ba5): (127, "OrderedNameDictionaryMap"),
|
||||
("read_only_space", 0x00bcd): (164, "PreparseDataMap"),
|
||||
("read_only_space", 0x00bf5): (165, "PropertyArrayMap"),
|
||||
("read_only_space", 0x00b55): (126, "OrderedHashMapMap"),
|
||||
("read_only_space", 0x00b7d): (127, "OrderedHashSetMap"),
|
||||
("read_only_space", 0x00ba5): (128, "OrderedNameDictionaryMap"),
|
||||
("read_only_space", 0x00bcd): (165, "PreparseDataMap"),
|
||||
("read_only_space", 0x00bf5): (166, "PropertyArrayMap"),
|
||||
("read_only_space", 0x00c1d): (92, "SideEffectCallHandlerInfoMap"),
|
||||
("read_only_space", 0x00c45): (92, "SideEffectFreeCallHandlerInfoMap"),
|
||||
("read_only_space", 0x00c6d): (92, "NextCallSideEffectFreeCallHandlerInfoMap"),
|
||||
("read_only_space", 0x00c95): (128, "SimpleNumberDictionaryMap"),
|
||||
("read_only_space", 0x00cbd): (119, "SloppyArgumentsElementsMap"),
|
||||
("read_only_space", 0x00ce5): (147, "SmallOrderedHashMapMap"),
|
||||
("read_only_space", 0x00d0d): (148, "SmallOrderedHashSetMap"),
|
||||
("read_only_space", 0x00d35): (149, "SmallOrderedNameDictionaryMap"),
|
||||
("read_only_space", 0x00c95): (129, "SimpleNumberDictionaryMap"),
|
||||
("read_only_space", 0x00cbd): (120, "SloppyArgumentsElementsMap"),
|
||||
("read_only_space", 0x00ce5): (148, "SmallOrderedHashMapMap"),
|
||||
("read_only_space", 0x00d0d): (149, "SmallOrderedHashSetMap"),
|
||||
("read_only_space", 0x00d35): (150, "SmallOrderedNameDictionaryMap"),
|
||||
("read_only_space", 0x00d5d): (68, "SourceTextModuleMap"),
|
||||
("read_only_space", 0x00d85): (129, "StringTableMap"),
|
||||
("read_only_space", 0x00d85): (130, "StringTableMap"),
|
||||
("read_only_space", 0x00dad): (69, "SyntheticModuleMap"),
|
||||
("read_only_space", 0x00dd5): (151, "UncompiledDataWithoutPreparseDataMap"),
|
||||
("read_only_space", 0x00dfd): (150, "UncompiledDataWithPreparseDataMap"),
|
||||
("read_only_space", 0x00e25): (168, "WeakArrayListMap"),
|
||||
("read_only_space", 0x00e4d): (121, "EphemeronHashTableMap"),
|
||||
("read_only_space", 0x00e75): (158, "EmbedderDataArrayMap"),
|
||||
("read_only_space", 0x00e9d): (169, "WeakCellMap"),
|
||||
("read_only_space", 0x00dd5): (152, "UncompiledDataWithoutPreparseDataMap"),
|
||||
("read_only_space", 0x00dfd): (151, "UncompiledDataWithPreparseDataMap"),
|
||||
("read_only_space", 0x00e25): (169, "WeakArrayListMap"),
|
||||
("read_only_space", 0x00e4d): (122, "EphemeronHashTableMap"),
|
||||
("read_only_space", 0x00e75): (159, "EmbedderDataArrayMap"),
|
||||
("read_only_space", 0x00e9d): (170, "WeakCellMap"),
|
||||
("read_only_space", 0x00ec5): (32, "StringMap"),
|
||||
("read_only_space", 0x00eed): (41, "ConsOneByteStringMap"),
|
||||
("read_only_space", 0x00f15): (33, "ConsStringMap"),
|
||||
@ -305,32 +306,33 @@ KNOWN_MAPS = {
|
||||
("read_only_space", 0x035b9): (100, "InterpreterDataMap"),
|
||||
("read_only_space", 0x035e1): (101, "PromiseCapabilityMap"),
|
||||
("read_only_space", 0x03609): (102, "PromiseReactionMap"),
|
||||
("read_only_space", 0x03631): (103, "PrototypeInfoMap"),
|
||||
("read_only_space", 0x03659): (104, "ScriptMap"),
|
||||
("read_only_space", 0x03681): (108, "SourceTextModuleInfoEntryMap"),
|
||||
("read_only_space", 0x036a9): (109, "StackFrameInfoMap"),
|
||||
("read_only_space", 0x036d1): (110, "StackTraceFrameMap"),
|
||||
("read_only_space", 0x036f9): (111, "TemplateObjectDescriptionMap"),
|
||||
("read_only_space", 0x03721): (112, "Tuple2Map"),
|
||||
("read_only_space", 0x03749): (113, "WasmCapiFunctionDataMap"),
|
||||
("read_only_space", 0x03771): (114, "WasmDebugInfoMap"),
|
||||
("read_only_space", 0x03799): (115, "WasmExceptionTagMap"),
|
||||
("read_only_space", 0x037c1): (116, "WasmExportedFunctionDataMap"),
|
||||
("read_only_space", 0x037e9): (117, "WasmIndirectFunctionTableMap"),
|
||||
("read_only_space", 0x03811): (118, "WasmJSFunctionDataMap"),
|
||||
("read_only_space", 0x03839): (99, "InternalClassMap"),
|
||||
("read_only_space", 0x03861): (106, "SmiPairMap"),
|
||||
("read_only_space", 0x03889): (105, "SmiBoxMap"),
|
||||
("read_only_space", 0x038b1): (107, "SortStateMap"),
|
||||
("read_only_space", 0x038d9): (85, "AllocationSiteWithWeakNextMap"),
|
||||
("read_only_space", 0x03901): (85, "AllocationSiteWithoutWeakNextMap"),
|
||||
("read_only_space", 0x03929): (76, "LoadHandler1Map"),
|
||||
("read_only_space", 0x03951): (76, "LoadHandler2Map"),
|
||||
("read_only_space", 0x03979): (76, "LoadHandler3Map"),
|
||||
("read_only_space", 0x039a1): (77, "StoreHandler0Map"),
|
||||
("read_only_space", 0x039c9): (77, "StoreHandler1Map"),
|
||||
("read_only_space", 0x039f1): (77, "StoreHandler2Map"),
|
||||
("read_only_space", 0x03a19): (77, "StoreHandler3Map"),
|
||||
("read_only_space", 0x03631): (103, "PropertyDescriptorObjectMap"),
|
||||
("read_only_space", 0x03659): (104, "PrototypeInfoMap"),
|
||||
("read_only_space", 0x03681): (105, "ScriptMap"),
|
||||
("read_only_space", 0x036a9): (109, "SourceTextModuleInfoEntryMap"),
|
||||
("read_only_space", 0x036d1): (110, "StackFrameInfoMap"),
|
||||
("read_only_space", 0x036f9): (111, "StackTraceFrameMap"),
|
||||
("read_only_space", 0x03721): (112, "TemplateObjectDescriptionMap"),
|
||||
("read_only_space", 0x03749): (113, "Tuple2Map"),
|
||||
("read_only_space", 0x03771): (114, "WasmCapiFunctionDataMap"),
|
||||
("read_only_space", 0x03799): (115, "WasmDebugInfoMap"),
|
||||
("read_only_space", 0x037c1): (116, "WasmExceptionTagMap"),
|
||||
("read_only_space", 0x037e9): (117, "WasmExportedFunctionDataMap"),
|
||||
("read_only_space", 0x03811): (118, "WasmIndirectFunctionTableMap"),
|
||||
("read_only_space", 0x03839): (119, "WasmJSFunctionDataMap"),
|
||||
("read_only_space", 0x03861): (99, "InternalClassMap"),
|
||||
("read_only_space", 0x03889): (107, "SmiPairMap"),
|
||||
("read_only_space", 0x038b1): (106, "SmiBoxMap"),
|
||||
("read_only_space", 0x038d9): (108, "SortStateMap"),
|
||||
("read_only_space", 0x03901): (85, "AllocationSiteWithWeakNextMap"),
|
||||
("read_only_space", 0x03929): (85, "AllocationSiteWithoutWeakNextMap"),
|
||||
("read_only_space", 0x03951): (76, "LoadHandler1Map"),
|
||||
("read_only_space", 0x03979): (76, "LoadHandler2Map"),
|
||||
("read_only_space", 0x039a1): (76, "LoadHandler3Map"),
|
||||
("read_only_space", 0x039c9): (77, "StoreHandler0Map"),
|
||||
("read_only_space", 0x039f1): (77, "StoreHandler1Map"),
|
||||
("read_only_space", 0x03a19): (77, "StoreHandler2Map"),
|
||||
("read_only_space", 0x03a41): (77, "StoreHandler3Map"),
|
||||
("map_space", 0x00121): (1057, "ExternalMap"),
|
||||
("map_space", 0x00149): (1073, "JSMessageObjectMap"),
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user