Cleanup: Remove unnecessary ContextExtension wrapper

Bug: v8:7066
Change-Id: Icfcb40b2048997c158fba5f3e250145bed4ca1e3
Reviewed-on: https://chromium-review.googlesource.com/1042386
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#52981}
This commit is contained in:
Toon Verwaest 2018-05-04 10:45:02 +02:00 committed by Commit Bot
parent b9c81f51d4
commit 4c972d669a
16 changed files with 143 additions and 275 deletions

View File

@ -851,25 +851,6 @@ FieldAccess AccessBuilder::ForContextSlot(size_t index) {
return access;
}
// static
FieldAccess AccessBuilder::ForContextExtensionScopeInfo() {
FieldAccess access = {
kTaggedBase, ContextExtension::kScopeInfoOffset,
Handle<Name>(), MaybeHandle<Map>(),
Type::OtherInternal(), MachineType::AnyTagged(),
kFullWriteBarrier};
return access;
}
// static
FieldAccess AccessBuilder::ForContextExtensionExtension() {
FieldAccess access = {kTaggedBase, ContextExtension::kExtensionOffset,
Handle<Name>(), MaybeHandle<Map>(),
Type::Any(), MachineType::AnyTagged(),
kFullWriteBarrier};
return access;
}
// static
ElementAccess AccessBuilder::ForFixedArrayElement() {
ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(),

View File

@ -273,10 +273,6 @@ class V8_EXPORT_PRIVATE AccessBuilder final
// Provides access to Context slots.
static FieldAccess ForContextSlot(size_t index);
// Provides access to ContextExtension fields.
static FieldAccess ForContextExtensionScopeInfo();
static FieldAccess ForContextExtensionExtension();
// Provides access to FixedArray elements.
static ElementAccess ForFixedArrayElement();
static ElementAccess ForFixedArrayElement(

View File

@ -1330,19 +1330,12 @@ Reduction JSCreateLowering::ReduceJSCreateFunctionContext(Node* node) {
Reduction JSCreateLowering::ReduceJSCreateWithContext(Node* node) {
DCHECK_EQ(IrOpcode::kJSCreateWithContext, node->opcode());
Handle<ScopeInfo> scope_info = ScopeInfoOf(node->op());
Node* object = NodeProperties::GetValueInput(node, 0);
Node* extension = NodeProperties::GetValueInput(node, 0);
Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node);
Node* context = NodeProperties::GetContextInput(node);
AllocationBuilder aa(jsgraph(), effect, control);
aa.Allocate(ContextExtension::kSize);
aa.Store(AccessBuilder::ForMap(), factory()->context_extension_map());
aa.Store(AccessBuilder::ForContextExtensionScopeInfo(), scope_info);
aa.Store(AccessBuilder::ForContextExtensionExtension(), object);
Node* extension = aa.Finish();
AllocationBuilder a(jsgraph(), extension, control);
AllocationBuilder a(jsgraph(), effect, control);
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); // Ensure fully covered.
a.AllocateContext(Context::MIN_CONTEXT_SLOTS, factory()->with_context_map());
a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info);
@ -1360,27 +1353,19 @@ Reduction JSCreateLowering::ReduceJSCreateCatchContext(Node* node) {
const CreateCatchContextParameters& parameters =
CreateCatchContextParametersOf(node->op());
Handle<ScopeInfo> scope_info = parameters.scope_info();
Handle<String> catch_name = parameters.catch_name();
Node* exception = NodeProperties::GetValueInput(node, 0);
Node* effect = NodeProperties::GetEffectInput(node);
Node* control = NodeProperties::GetControlInput(node);
Node* context = NodeProperties::GetContextInput(node);
AllocationBuilder aa(jsgraph(), effect, control);
aa.Allocate(ContextExtension::kSize);
aa.Store(AccessBuilder::ForMap(), factory()->context_extension_map());
aa.Store(AccessBuilder::ForContextExtensionScopeInfo(),
parameters.scope_info());
aa.Store(AccessBuilder::ForContextExtensionExtension(),
parameters.catch_name());
Node* extension = aa.Finish();
AllocationBuilder a(jsgraph(), extension, control);
AllocationBuilder a(jsgraph(), effect, control);
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4); // Ensure fully covered.
a.AllocateContext(Context::MIN_CONTEXT_SLOTS + 1,
factory()->catch_context_map());
a.Store(AccessBuilder::ForContextSlot(Context::SCOPE_INFO_INDEX), scope_info);
a.Store(AccessBuilder::ForContextSlot(Context::PREVIOUS_INDEX), context);
a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), extension);
a.Store(AccessBuilder::ForContextSlot(Context::EXTENSION_INDEX), catch_name);
a.Store(AccessBuilder::ForContextSlot(Context::NATIVE_CONTEXT_INDEX),
jsgraph()->HeapConstant(native_context()));
a.Store(AccessBuilder::ForContextSlot(Context::THROWN_OBJECT_INDEX),

View File

@ -327,7 +327,6 @@ Type::bitset BitsetType::Lub(i::Map* map) {
case WASM_SHARED_MODULE_DATA_TYPE:
case LOAD_HANDLER_TYPE:
case STORE_HANDLER_TYPE:
case CONTEXT_EXTENSION_TYPE:
case ASYNC_GENERATOR_REQUEST_TYPE:
case CODE_DATA_CONTAINER_TYPE:
case CALLBACK_TASK_TYPE:

View File

@ -93,10 +93,6 @@ JSObject* Context::extension_object() {
IsEvalContext());
HeapObject* object = extension();
if (object->IsTheHole(GetIsolate())) return nullptr;
if (IsBlockContext()) {
if (!object->IsContextExtension()) return nullptr;
object = JSObject::cast(ContextExtension::cast(object)->extension());
}
DCHECK(object->IsJSContextExtensionObject() ||
(IsNativeContext() && object->IsJSGlobalObject()));
return JSObject::cast(object);
@ -105,9 +101,7 @@ JSObject* Context::extension_object() {
JSReceiver* Context::extension_receiver() {
DCHECK(IsNativeContext() || IsWithContext() || IsEvalContext() ||
IsFunctionContext() || IsBlockContext());
return IsWithContext() ? JSReceiver::cast(
ContextExtension::cast(extension())->extension())
: extension_object();
return IsWithContext() ? JSReceiver::cast(extension()) : extension_object();
}
ScopeInfo* Context::scope_info() {
@ -124,7 +118,7 @@ Module* Context::module() {
String* Context::catch_name() {
DCHECK(IsCatchContext());
return String::cast(ContextExtension::cast(extension())->extension());
return String::cast(extension());
}
@ -378,16 +372,13 @@ Handle<Object> Context::Lookup(Handle<String> name, ContextLookupFlags flags,
} else if (context->IsDebugEvaluateContext()) {
// Check materialized locals.
Object* ext = context->get(EXTENSION_INDEX);
if (ext->IsContextExtension()) {
Object* obj = ContextExtension::cast(ext)->extension();
if (obj->IsJSReceiver()) {
Handle<JSReceiver> extension(JSReceiver::cast(obj));
LookupIterator it(extension, name, extension);
Maybe<bool> found = JSReceiver::HasProperty(&it);
if (found.FromMaybe(false)) {
*attributes = NONE;
return extension;
}
if (ext->IsJSReceiver()) {
Handle<JSReceiver> extension(JSReceiver::cast(ext));
LookupIterator it(extension, name, extension);
Maybe<bool> found = JSReceiver::HasProperty(&it);
if (found.FromMaybe(false)) {
*attributes = NONE;
return extension;
}
}
// Check the original context, but do not follow its context chain.

View File

@ -382,18 +382,15 @@ class ScriptContextTable : public FixedArray {
//
// [ extension ] Additional data.
//
// For catch contexts, it contains a ContextExtension object
// consisting of the ScopeInfo and the name of the catch
// For catch contexts, it contains the name of the catch
// variable.
//
// For module contexts, it contains the module object.
//
// For block contexts, it may contain a ContextExtension
// object consisting of the ScopeInfo and an "extension
// object" (see below).
// For block contexts, it may contain an "extension object"
// (see below).
//
// For with contexts, it contains a ContextExtension object
// consisting of the ScopeInfo and an "extension object".
// For with contexts, it contains an "extension object".
//
// An "extension object" is used to dynamically extend a
// context with additional variables, namely in the

View File

@ -3419,7 +3419,6 @@ void TranslatedState::InitializeCapturedObjectAt(
case BOILERPLATE_DESCRIPTION_TYPE:
case HASH_TABLE_TYPE:
case PROPERTY_ARRAY_TYPE:
case CONTEXT_EXTENSION_TYPE:
InitializeObjectWithTaggedFieldsAt(frame, &value_index, slot, map,
no_allocation);
break;
@ -3586,14 +3585,6 @@ void TranslatedState::EnsureCapturedObjectAllocatedAt(
&value_index, worklist);
}
case CONTEXT_EXTENSION_TYPE: {
CHECK_EQ(map->instance_size(), slot->GetChildrenCount() * kPointerSize);
slot->set_storage(AllocateStorageFor(slot));
// Make sure all the remaining children (after the map) are allocated.
return EnsureChildrenAllocated(slot->GetChildrenCount() - 1, frame,
&value_index, worklist);
}
default:
CHECK(map->IsJSObjectMap());
EnsureJSObjectAllocated(slot, map);

View File

@ -155,15 +155,6 @@ Handle<Tuple3> Factory::NewTuple3(Handle<Object> value1, Handle<Object> value2,
return result;
}
Handle<ContextExtension> Factory::NewContextExtension(
Handle<ScopeInfo> scope_info, Handle<Object> extension) {
Handle<ContextExtension> result = Handle<ContextExtension>::cast(
NewStruct(CONTEXT_EXTENSION_TYPE, TENURED));
result->set_scope_info(*scope_info);
result->set_extension(*extension);
return result;
}
Handle<ConstantElementsPair> Factory::NewConstantElementsPair(
ElementsKind elements_kind, Handle<FixedArrayBase> constant_values) {
Handle<ConstantElementsPair> result =
@ -1343,12 +1334,11 @@ Handle<Context> Factory::NewCatchContext(Handle<Context> previous,
Handle<String> name,
Handle<Object> thrown_object) {
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == Context::THROWN_OBJECT_INDEX);
Handle<ContextExtension> extension = NewContextExtension(scope_info, name);
Handle<Context> context = NewFixedArrayWithMap<Context>(
Heap::kCatchContextMapRootIndex, Context::MIN_CONTEXT_SLOTS + 1);
context->set_scope_info(*scope_info);
context->set_previous(*previous);
context->set_extension(*extension);
context->set_extension(*name);
context->set_native_context(previous->native_context());
context->set(Context::THROWN_OBJECT_INDEX, *thrown_object);
return context;
@ -1361,15 +1351,15 @@ Handle<Context> Factory::NewDebugEvaluateContext(Handle<Context> previous,
Handle<StringSet> whitelist) {
STATIC_ASSERT(Context::WHITE_LIST_INDEX == Context::MIN_CONTEXT_SLOTS + 1);
DCHECK(scope_info->IsDebugEvaluateScope());
Handle<ContextExtension> context_extension = NewContextExtension(
scope_info, extension.is_null() ? Handle<Object>::cast(undefined_value())
: Handle<Object>::cast(extension));
Handle<HeapObject> ext = extension.is_null()
? Handle<HeapObject>::cast(the_hole_value())
: Handle<HeapObject>::cast(extension);
Handle<Context> c = NewFixedArrayWithMap<Context>(
Heap::kDebugEvaluateContextMapRootIndex, Context::MIN_CONTEXT_SLOTS + 2);
c->set_scope_info(*scope_info);
c->set_previous(*previous);
c->set_native_context(previous->native_context());
c->set_extension(*context_extension);
c->set_extension(*ext);
if (!wrapped.is_null()) c->set(Context::WRAPPED_CONTEXT_INDEX, *wrapped);
if (!whitelist.is_null()) c->set(Context::WHITE_LIST_INDEX, *whitelist);
return c;
@ -1378,13 +1368,11 @@ Handle<Context> Factory::NewDebugEvaluateContext(Handle<Context> previous,
Handle<Context> Factory::NewWithContext(Handle<Context> previous,
Handle<ScopeInfo> scope_info,
Handle<JSReceiver> extension) {
Handle<ContextExtension> context_extension =
NewContextExtension(scope_info, extension);
Handle<Context> context = NewFixedArrayWithMap<Context>(
Heap::kWithContextMapRootIndex, Context::MIN_CONTEXT_SLOTS);
context->set_scope_info(*scope_info);
context->set_previous(*previous);
context->set_extension(*context_extension);
context->set_extension(*extension);
context->set_native_context(previous->native_context());
return context;
}

View File

@ -186,10 +186,6 @@ class V8_EXPORT_PRIVATE Factory {
Handle<Tuple3> NewTuple3(Handle<Object> value1, Handle<Object> value2,
Handle<Object> value3, PretenureFlag pretenure);
// Create a new ContextExtension struct.
Handle<ContextExtension> NewContextExtension(Handle<ScopeInfo> scope_info,
Handle<Object> extension);
// Create a new ConstantElementsPair struct.
Handle<ConstantElementsPair> NewConstantElementsPair(
ElementsKind elements_kind, Handle<FixedArrayBase> constant_values);

View File

@ -716,8 +716,7 @@ int IncrementalMarking::VisitObject(Map* map, HeapObject* obj) {
// unsafe layout change.
// 4. The object is materizalized by the deoptimizer.
DCHECK(obj->IsHashTable() || obj->IsPropertyArray() ||
obj->IsContextExtension() || obj->IsFixedArray() ||
obj->IsJSObject() || obj->IsString());
obj->IsFixedArray() || obj->IsJSObject() || obj->IsString());
}
DCHECK(marking_state()->IsBlack(obj));
WhiteToGreyAndPush(map);

View File

@ -1611,12 +1611,6 @@ void StoreHandler::StoreHandlerVerify() {
// TODO(ishell): check handler integrity
}
void ContextExtension::ContextExtensionVerify() {
CHECK(IsContextExtension());
VerifyObjectField(kScopeInfoOffset);
VerifyObjectField(kExtensionOffset);
}
void AccessorInfo::AccessorInfoVerify() {
CHECK(IsAccessorInfo());
VerifyPointer(name());

View File

@ -571,7 +571,6 @@ CAST_ACCESSOR(BigInt)
CAST_ACCESSOR(BoilerplateDescription)
CAST_ACCESSOR(Cell)
CAST_ACCESSOR(ConstantElementsPair)
CAST_ACCESSOR(ContextExtension)
CAST_ACCESSOR(DescriptorArray)
CAST_ACCESSOR(EnumCache)
CAST_ACCESSOR(FeedbackCell)
@ -2324,9 +2323,6 @@ ACCESSORS(Tuple2, value1, Object, kValue1Offset)
ACCESSORS(Tuple2, value2, Object, kValue2Offset)
ACCESSORS(Tuple3, value3, Object, kValue3Offset)
ACCESSORS(ContextExtension, scope_info, ScopeInfo, kScopeInfoOffset)
ACCESSORS(ContextExtension, extension, Object, kExtensionOffset)
SMI_ACCESSORS(ConstantElementsPair, elements_kind, kElementsKindOffset)
ACCESSORS(ConstantElementsPair, constant_values, FixedArrayBase,
kConstantValuesOffset)

View File

@ -1645,13 +1645,6 @@ void StoreHandler::StoreHandlerPrint(std::ostream& os) { // NOLINT
os << "\n";
}
void ContextExtension::ContextExtensionPrint(std::ostream& os) { // NOLINT
HeapObject::PrintHeader(os, "ContextExtension");
os << "\n - scope_info: " << Brief(scope_info());
os << "\n - extension: " << Brief(extension());
os << "\n";
}
void AccessorPair::AccessorPairPrint(std::ostream& os) { // NOLINT
HeapObject::PrintHeader(os, "AccessorPair");
os << "\n - getter: " << Brief(getter());

View File

@ -382,7 +382,6 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
V(ALLOCATION_MEMENTO_TYPE) \
V(ALLOCATION_SITE_TYPE) \
V(ASYNC_GENERATOR_REQUEST_TYPE) \
V(CONTEXT_EXTENSION_TYPE) \
V(DEBUG_INFO_TYPE) \
V(FUNCTION_TEMPLATE_INFO_TYPE) \
V(INTERCEPTOR_INFO_TYPE) \
@ -557,7 +556,6 @@ const int kStubMinorKeyBits = kSmiValueSize - kStubMajorKeyBits - 1;
V(ALLOCATION_MEMENTO, AllocationMemento, allocation_memento) \
V(ALLOCATION_SITE, AllocationSite, allocation_site) \
V(ASYNC_GENERATOR_REQUEST, AsyncGeneratorRequest, async_generator_request) \
V(CONTEXT_EXTENSION, ContextExtension, context_extension) \
V(DEBUG_INFO, DebugInfo, debug_info) \
V(FUNCTION_TEMPLATE_INFO, FunctionTemplateInfo, function_template_info) \
V(INTERCEPTOR_INFO, InterceptorInfo, interceptor_info) \
@ -752,7 +750,6 @@ enum InstanceType : uint16_t {
ALLOCATION_MEMENTO_TYPE,
ALLOCATION_SITE_TYPE,
ASYNC_GENERATOR_REQUEST_TYPE,
CONTEXT_EXTENSION_TYPE,
DEBUG_INFO_TYPE,
FUNCTION_TEMPLATE_INFO_TYPE,
INTERCEPTOR_INFO_TYPE,
@ -2988,32 +2985,6 @@ class PrototypeInfo : public Struct {
DISALLOW_IMPLICIT_CONSTRUCTORS(PrototypeInfo);
};
// Pair used to store both a ScopeInfo and an extension object in the extension
// slot of a block, catch, or with context. Needed in the rare case where a
// declaration block scope (a "varblock" as used to desugar parameter
// destructuring) also contains a sloppy direct eval, or for with and catch
// scopes. (In no other case both are needed at the same time.)
class ContextExtension : public Struct {
public:
// [scope_info]: Scope info.
DECL_ACCESSORS(scope_info, ScopeInfo)
// [extension]: Extension object.
DECL_ACCESSORS(extension, Object)
DECL_CAST(ContextExtension)
// Dispatched behavior.
DECL_PRINTER(ContextExtension)
DECL_VERIFIER(ContextExtension)
static const int kScopeInfoOffset = HeapObject::kHeaderSize;
static const int kExtensionOffset = kScopeInfoOffset + kPointerSize;
static const int kSize = kExtensionOffset + kPointerSize;
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(ContextExtension);
};
// List of builtin functions we want to identify to improve code
// generation.
//

View File

@ -297,14 +297,7 @@ Object* DeclareEvalHelper(Isolate* isolate, Handle<String> name,
object =
isolate->factory()->NewJSObject(isolate->context_extension_function());
if (context->IsBlockContext()) {
Handle<ContextExtension> extension =
isolate->factory()->NewContextExtension(handle(context->scope_info()),
object);
context->set_extension(*extension);
} else {
context->set_extension(*object);
}
context->set_extension(*object);
}
RETURN_FAILURE_ON_EXCEPTION(isolate, JSObject::SetOwnPropertyIgnoreAttributes(

View File

@ -61,59 +61,58 @@ INSTANCE_TYPES = {
157: "ALLOCATION_MEMENTO_TYPE",
158: "ALLOCATION_SITE_TYPE",
159: "ASYNC_GENERATOR_REQUEST_TYPE",
160: "CONTEXT_EXTENSION_TYPE",
161: "DEBUG_INFO_TYPE",
162: "FUNCTION_TEMPLATE_INFO_TYPE",
163: "INTERCEPTOR_INFO_TYPE",
164: "INTERPRETER_DATA_TYPE",
165: "MODULE_INFO_ENTRY_TYPE",
166: "MODULE_TYPE",
167: "OBJECT_TEMPLATE_INFO_TYPE",
168: "PROMISE_CAPABILITY_TYPE",
169: "PROMISE_REACTION_TYPE",
170: "PROTOTYPE_INFO_TYPE",
171: "SCRIPT_TYPE",
172: "STACK_FRAME_INFO_TYPE",
173: "TUPLE2_TYPE",
174: "TUPLE3_TYPE",
175: "WASM_COMPILED_MODULE_TYPE",
176: "WASM_DEBUG_INFO_TYPE",
177: "WASM_SHARED_MODULE_DATA_TYPE",
178: "CALLABLE_TASK_TYPE",
179: "CALLBACK_TASK_TYPE",
180: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE",
181: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE",
182: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE",
183: "FIXED_ARRAY_TYPE",
184: "BOILERPLATE_DESCRIPTION_TYPE",
185: "DESCRIPTOR_ARRAY_TYPE",
186: "HASH_TABLE_TYPE",
187: "SCOPE_INFO_TYPE",
188: "BLOCK_CONTEXT_TYPE",
189: "CATCH_CONTEXT_TYPE",
190: "DEBUG_EVALUATE_CONTEXT_TYPE",
191: "EVAL_CONTEXT_TYPE",
192: "FUNCTION_CONTEXT_TYPE",
193: "MODULE_CONTEXT_TYPE",
194: "NATIVE_CONTEXT_TYPE",
195: "SCRIPT_CONTEXT_TYPE",
196: "WITH_CONTEXT_TYPE",
197: "WEAK_FIXED_ARRAY_TYPE",
198: "TRANSITION_ARRAY_TYPE",
199: "CALL_HANDLER_INFO_TYPE",
200: "CELL_TYPE",
201: "CODE_DATA_CONTAINER_TYPE",
202: "FEEDBACK_CELL_TYPE",
203: "FEEDBACK_VECTOR_TYPE",
204: "LOAD_HANDLER_TYPE",
205: "PROPERTY_ARRAY_TYPE",
206: "PROPERTY_CELL_TYPE",
207: "SHARED_FUNCTION_INFO_TYPE",
208: "SMALL_ORDERED_HASH_MAP_TYPE",
209: "SMALL_ORDERED_HASH_SET_TYPE",
210: "STORE_HANDLER_TYPE",
211: "WEAK_CELL_TYPE",
212: "WEAK_ARRAY_LIST_TYPE",
160: "DEBUG_INFO_TYPE",
161: "FUNCTION_TEMPLATE_INFO_TYPE",
162: "INTERCEPTOR_INFO_TYPE",
163: "INTERPRETER_DATA_TYPE",
164: "MODULE_INFO_ENTRY_TYPE",
165: "MODULE_TYPE",
166: "OBJECT_TEMPLATE_INFO_TYPE",
167: "PROMISE_CAPABILITY_TYPE",
168: "PROMISE_REACTION_TYPE",
169: "PROTOTYPE_INFO_TYPE",
170: "SCRIPT_TYPE",
171: "STACK_FRAME_INFO_TYPE",
172: "TUPLE2_TYPE",
173: "TUPLE3_TYPE",
174: "WASM_COMPILED_MODULE_TYPE",
175: "WASM_DEBUG_INFO_TYPE",
176: "WASM_SHARED_MODULE_DATA_TYPE",
177: "CALLABLE_TASK_TYPE",
178: "CALLBACK_TASK_TYPE",
179: "PROMISE_FULFILL_REACTION_JOB_TASK_TYPE",
180: "PROMISE_REJECT_REACTION_JOB_TASK_TYPE",
181: "PROMISE_RESOLVE_THENABLE_JOB_TASK_TYPE",
182: "FIXED_ARRAY_TYPE",
183: "BOILERPLATE_DESCRIPTION_TYPE",
184: "DESCRIPTOR_ARRAY_TYPE",
185: "HASH_TABLE_TYPE",
186: "SCOPE_INFO_TYPE",
187: "BLOCK_CONTEXT_TYPE",
188: "CATCH_CONTEXT_TYPE",
189: "DEBUG_EVALUATE_CONTEXT_TYPE",
190: "EVAL_CONTEXT_TYPE",
191: "FUNCTION_CONTEXT_TYPE",
192: "MODULE_CONTEXT_TYPE",
193: "NATIVE_CONTEXT_TYPE",
194: "SCRIPT_CONTEXT_TYPE",
195: "WITH_CONTEXT_TYPE",
196: "WEAK_FIXED_ARRAY_TYPE",
197: "TRANSITION_ARRAY_TYPE",
198: "CALL_HANDLER_INFO_TYPE",
199: "CELL_TYPE",
200: "CODE_DATA_CONTAINER_TYPE",
201: "FEEDBACK_CELL_TYPE",
202: "FEEDBACK_VECTOR_TYPE",
203: "LOAD_HANDLER_TYPE",
204: "PROPERTY_ARRAY_TYPE",
205: "PROPERTY_CELL_TYPE",
206: "SHARED_FUNCTION_INFO_TYPE",
207: "SMALL_ORDERED_HASH_MAP_TYPE",
208: "SMALL_ORDERED_HASH_SET_TYPE",
209: "STORE_HANDLER_TYPE",
210: "WEAK_CELL_TYPE",
211: "WEAK_ARRAY_LIST_TYPE",
1024: "JS_PROXY_TYPE",
1025: "JS_GLOBAL_OBJECT_TYPE",
1026: "JS_GLOBAL_PROXY_TYPE",
@ -162,9 +161,9 @@ KNOWN_MAPS = {
("RO_SPACE", 0x02201): (138, "FreeSpaceMap"),
("RO_SPACE", 0x02259): (132, "MetaMap"),
("RO_SPACE", 0x022e1): (131, "NullMap"),
("RO_SPACE", 0x02359): (185, "DescriptorArrayMap"),
("RO_SPACE", 0x023c1): (183, "FixedArrayMap"),
("RO_SPACE", 0x02429): (211, "WeakCellMap"),
("RO_SPACE", 0x02359): (184, "DescriptorArrayMap"),
("RO_SPACE", 0x023c1): (182, "FixedArrayMap"),
("RO_SPACE", 0x02429): (210, "WeakCellMap"),
("RO_SPACE", 0x024d1): (152, "OnePointerFillerMap"),
("RO_SPACE", 0x02539): (152, "TwoPointerFillerMap"),
("RO_SPACE", 0x025a1): (131, "UninitializedMap"),
@ -174,60 +173,60 @@ KNOWN_MAPS = {
("RO_SPACE", 0x02801): (131, "TheHoleMap"),
("RO_SPACE", 0x028c9): (131, "BooleanMap"),
("RO_SPACE", 0x029d9): (136, "ByteArrayMap"),
("RO_SPACE", 0x02a41): (183, "FixedCOWArrayMap"),
("RO_SPACE", 0x02aa9): (186, "HashTableMap"),
("RO_SPACE", 0x02a41): (182, "FixedCOWArrayMap"),
("RO_SPACE", 0x02aa9): (185, "HashTableMap"),
("RO_SPACE", 0x02b11): (128, "SymbolMap"),
("RO_SPACE", 0x02b79): (72, "OneByteStringMap"),
("RO_SPACE", 0x02be1): (187, "ScopeInfoMap"),
("RO_SPACE", 0x02c49): (207, "SharedFunctionInfoMap"),
("RO_SPACE", 0x02be1): (186, "ScopeInfoMap"),
("RO_SPACE", 0x02c49): (206, "SharedFunctionInfoMap"),
("RO_SPACE", 0x02cb1): (133, "CodeMap"),
("RO_SPACE", 0x02d19): (192, "FunctionContextMap"),
("RO_SPACE", 0x02d81): (200, "CellMap"),
("RO_SPACE", 0x02de9): (206, "GlobalPropertyCellMap"),
("RO_SPACE", 0x02d19): (191, "FunctionContextMap"),
("RO_SPACE", 0x02d81): (199, "CellMap"),
("RO_SPACE", 0x02de9): (205, "GlobalPropertyCellMap"),
("RO_SPACE", 0x02e51): (135, "ForeignMap"),
("RO_SPACE", 0x02eb9): (198, "TransitionArrayMap"),
("RO_SPACE", 0x02f21): (203, "FeedbackVectorMap"),
("RO_SPACE", 0x02eb9): (197, "TransitionArrayMap"),
("RO_SPACE", 0x02f21): (202, "FeedbackVectorMap"),
("RO_SPACE", 0x02f89): (131, "ArgumentsMarkerMap"),
("RO_SPACE", 0x03019): (131, "ExceptionMap"),
("RO_SPACE", 0x030a9): (131, "TerminationExceptionMap"),
("RO_SPACE", 0x03141): (131, "OptimizedOutMap"),
("RO_SPACE", 0x031d1): (131, "StaleRegisterMap"),
("RO_SPACE", 0x03261): (194, "NativeContextMap"),
("RO_SPACE", 0x032c9): (193, "ModuleContextMap"),
("RO_SPACE", 0x03331): (191, "EvalContextMap"),
("RO_SPACE", 0x03399): (195, "ScriptContextMap"),
("RO_SPACE", 0x03401): (188, "BlockContextMap"),
("RO_SPACE", 0x03469): (189, "CatchContextMap"),
("RO_SPACE", 0x034d1): (196, "WithContextMap"),
("RO_SPACE", 0x03539): (190, "DebugEvaluateContextMap"),
("RO_SPACE", 0x035a1): (183, "ScriptContextTableMap"),
("RO_SPACE", 0x03261): (193, "NativeContextMap"),
("RO_SPACE", 0x032c9): (192, "ModuleContextMap"),
("RO_SPACE", 0x03331): (190, "EvalContextMap"),
("RO_SPACE", 0x03399): (194, "ScriptContextMap"),
("RO_SPACE", 0x03401): (187, "BlockContextMap"),
("RO_SPACE", 0x03469): (188, "CatchContextMap"),
("RO_SPACE", 0x034d1): (195, "WithContextMap"),
("RO_SPACE", 0x03539): (189, "DebugEvaluateContextMap"),
("RO_SPACE", 0x035a1): (182, "ScriptContextTableMap"),
("RO_SPACE", 0x03609): (151, "FeedbackMetadataArrayMap"),
("RO_SPACE", 0x03671): (183, "ArrayListMap"),
("RO_SPACE", 0x03671): (182, "ArrayListMap"),
("RO_SPACE", 0x036d9): (130, "BigIntMap"),
("RO_SPACE", 0x03741): (184, "BoilerplateDescriptionMap"),
("RO_SPACE", 0x03741): (183, "BoilerplateDescriptionMap"),
("RO_SPACE", 0x037a9): (137, "BytecodeArrayMap"),
("RO_SPACE", 0x03811): (201, "CodeDataContainerMap"),
("RO_SPACE", 0x03811): (200, "CodeDataContainerMap"),
("RO_SPACE", 0x03879): (150, "FixedDoubleArrayMap"),
("RO_SPACE", 0x038e1): (186, "GlobalDictionaryMap"),
("RO_SPACE", 0x03949): (202, "ManyClosuresCellMap"),
("RO_SPACE", 0x039b1): (183, "ModuleInfoMap"),
("RO_SPACE", 0x038e1): (185, "GlobalDictionaryMap"),
("RO_SPACE", 0x03949): (201, "ManyClosuresCellMap"),
("RO_SPACE", 0x039b1): (182, "ModuleInfoMap"),
("RO_SPACE", 0x03a19): (134, "MutableHeapNumberMap"),
("RO_SPACE", 0x03a81): (186, "NameDictionaryMap"),
("RO_SPACE", 0x03ae9): (202, "NoClosuresCellMap"),
("RO_SPACE", 0x03b51): (186, "NumberDictionaryMap"),
("RO_SPACE", 0x03bb9): (202, "OneClosureCellMap"),
("RO_SPACE", 0x03c21): (186, "OrderedHashMapMap"),
("RO_SPACE", 0x03c89): (186, "OrderedHashSetMap"),
("RO_SPACE", 0x03cf1): (205, "PropertyArrayMap"),
("RO_SPACE", 0x03d59): (199, "SideEffectCallHandlerInfoMap"),
("RO_SPACE", 0x03dc1): (199, "SideEffectFreeCallHandlerInfoMap"),
("RO_SPACE", 0x03e29): (186, "SimpleNumberDictionaryMap"),
("RO_SPACE", 0x03e91): (183, "SloppyArgumentsElementsMap"),
("RO_SPACE", 0x03ef9): (208, "SmallOrderedHashMapMap"),
("RO_SPACE", 0x03f61): (209, "SmallOrderedHashSetMap"),
("RO_SPACE", 0x03fc9): (186, "StringTableMap"),
("RO_SPACE", 0x04031): (197, "WeakFixedArrayMap"),
("RO_SPACE", 0x04099): (212, "WeakArrayListMap"),
("RO_SPACE", 0x03a81): (185, "NameDictionaryMap"),
("RO_SPACE", 0x03ae9): (201, "NoClosuresCellMap"),
("RO_SPACE", 0x03b51): (185, "NumberDictionaryMap"),
("RO_SPACE", 0x03bb9): (201, "OneClosureCellMap"),
("RO_SPACE", 0x03c21): (185, "OrderedHashMapMap"),
("RO_SPACE", 0x03c89): (185, "OrderedHashSetMap"),
("RO_SPACE", 0x03cf1): (204, "PropertyArrayMap"),
("RO_SPACE", 0x03d59): (198, "SideEffectCallHandlerInfoMap"),
("RO_SPACE", 0x03dc1): (198, "SideEffectFreeCallHandlerInfoMap"),
("RO_SPACE", 0x03e29): (185, "SimpleNumberDictionaryMap"),
("RO_SPACE", 0x03e91): (182, "SloppyArgumentsElementsMap"),
("RO_SPACE", 0x03ef9): (207, "SmallOrderedHashMapMap"),
("RO_SPACE", 0x03f61): (208, "SmallOrderedHashSetMap"),
("RO_SPACE", 0x03fc9): (185, "StringTableMap"),
("RO_SPACE", 0x04031): (196, "WeakFixedArrayMap"),
("RO_SPACE", 0x04099): (211, "WeakArrayListMap"),
("RO_SPACE", 0x04101): (106, "NativeSourceStringMap"),
("RO_SPACE", 0x04169): (64, "StringMap"),
("RO_SPACE", 0x041d1): (73, "ConsOneByteStringMap"),
@ -261,9 +260,9 @@ KNOWN_MAPS = {
("RO_SPACE", 0x04d31): (149, "FixedBigUint64ArrayMap"),
("RO_SPACE", 0x04d99): (148, "FixedBigInt64ArrayMap"),
("RO_SPACE", 0x04e01): (131, "SelfReferenceMarkerMap"),
("RO_SPACE", 0x04e81): (173, "Tuple2Map"),
("RO_SPACE", 0x04ef9): (171, "ScriptMap"),
("RO_SPACE", 0x04f61): (163, "InterceptorInfoMap"),
("RO_SPACE", 0x04e81): (172, "Tuple2Map"),
("RO_SPACE", 0x04ef9): (170, "ScriptMap"),
("RO_SPACE", 0x04f61): (162, "InterceptorInfoMap"),
("RO_SPACE", 0x08e59): (154, "AccessorInfoMap"),
("RO_SPACE", 0x09069): (153, "AccessCheckInfoMap"),
("RO_SPACE", 0x090d1): (155, "AccessorPairMap"),
@ -271,26 +270,25 @@ KNOWN_MAPS = {
("RO_SPACE", 0x091a1): (157, "AllocationMementoMap"),
("RO_SPACE", 0x09209): (158, "AllocationSiteMap"),
("RO_SPACE", 0x09271): (159, "AsyncGeneratorRequestMap"),
("RO_SPACE", 0x092d9): (160, "ContextExtensionMap"),
("RO_SPACE", 0x09341): (161, "DebugInfoMap"),
("RO_SPACE", 0x093a9): (162, "FunctionTemplateInfoMap"),
("RO_SPACE", 0x09411): (164, "InterpreterDataMap"),
("RO_SPACE", 0x09479): (165, "ModuleInfoEntryMap"),
("RO_SPACE", 0x094e1): (166, "ModuleMap"),
("RO_SPACE", 0x09549): (167, "ObjectTemplateInfoMap"),
("RO_SPACE", 0x095b1): (168, "PromiseCapabilityMap"),
("RO_SPACE", 0x09619): (169, "PromiseReactionMap"),
("RO_SPACE", 0x09681): (170, "PrototypeInfoMap"),
("RO_SPACE", 0x096e9): (172, "StackFrameInfoMap"),
("RO_SPACE", 0x09751): (174, "Tuple3Map"),
("RO_SPACE", 0x097b9): (175, "WasmCompiledModuleMap"),
("RO_SPACE", 0x09821): (176, "WasmDebugInfoMap"),
("RO_SPACE", 0x09889): (177, "WasmSharedModuleDataMap"),
("RO_SPACE", 0x098f1): (178, "CallableTaskMap"),
("RO_SPACE", 0x09959): (179, "CallbackTaskMap"),
("RO_SPACE", 0x099c1): (180, "PromiseFulfillReactionJobTaskMap"),
("RO_SPACE", 0x09a29): (181, "PromiseRejectReactionJobTaskMap"),
("RO_SPACE", 0x09a91): (182, "PromiseResolveThenableJobTaskMap"),
("RO_SPACE", 0x092d9): (160, "DebugInfoMap"),
("RO_SPACE", 0x09341): (161, "FunctionTemplateInfoMap"),
("RO_SPACE", 0x093a9): (163, "InterpreterDataMap"),
("RO_SPACE", 0x09411): (164, "ModuleInfoEntryMap"),
("RO_SPACE", 0x09479): (165, "ModuleMap"),
("RO_SPACE", 0x094e1): (166, "ObjectTemplateInfoMap"),
("RO_SPACE", 0x09549): (167, "PromiseCapabilityMap"),
("RO_SPACE", 0x095b1): (168, "PromiseReactionMap"),
("RO_SPACE", 0x09619): (169, "PrototypeInfoMap"),
("RO_SPACE", 0x09681): (171, "StackFrameInfoMap"),
("RO_SPACE", 0x096e9): (173, "Tuple3Map"),
("RO_SPACE", 0x09751): (174, "WasmCompiledModuleMap"),
("RO_SPACE", 0x097b9): (175, "WasmDebugInfoMap"),
("RO_SPACE", 0x09821): (176, "WasmSharedModuleDataMap"),
("RO_SPACE", 0x09889): (177, "CallableTaskMap"),
("RO_SPACE", 0x098f1): (178, "CallbackTaskMap"),
("RO_SPACE", 0x09959): (179, "PromiseFulfillReactionJobTaskMap"),
("RO_SPACE", 0x099c1): (180, "PromiseRejectReactionJobTaskMap"),
("RO_SPACE", 0x09a29): (181, "PromiseResolveThenableJobTaskMap"),
("MAP_SPACE", 0x02201): (1057, "ExternalMap"),
("MAP_SPACE", 0x02259): (1072, "JSMessageObjectMap"),
}