[torque] allow exported classes with custom C++ class

Introduce a new annotation @customCppClass that can be used for
non-extern @export classes, that is, generate everything, remove
boilerplate from all the internal lists and switches, but allow
a custom C++ class, which in turn also allows overwriting the generated
print and verify functions.

Port DescriptorArray and StrongDescriptorArray as an example.

Bug: v8:7793
Change-Id: I744e52fb4102ac49c0097f1c95bb17d301975bf0
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2489687
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
Reviewed-by: Seth Brenith <seth.brenith@microsoft.com>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#70989}
This commit is contained in:
Tobias Tebbi 2020-11-04 23:16:49 +01:00 committed by Commit Bot
parent 0147db5a4a
commit 26f10ecd95
20 changed files with 148 additions and 150 deletions

View File

@ -294,8 +294,6 @@ Type::bitset BitsetType::Lub(const MapRefLike& map) {
case BYTECODE_ARRAY_TYPE:
case OBJECT_BOILERPLATE_DESCRIPTION_TYPE:
case ARRAY_BOILERPLATE_DESCRIPTION_TYPE:
case DESCRIPTOR_ARRAY_TYPE:
case STRONG_DESCRIPTOR_ARRAY_TYPE:
case TRANSITION_ARRAY_TYPE:
case FEEDBACK_CELL_TYPE:
case CLOSURE_FEEDBACK_CELL_ARRAY_TYPE:

View File

@ -252,11 +252,6 @@ void HeapObject::HeapObjectVerify(Isolate* isolate) {
TORQUE_INSTANCE_CHECKERS_MULTIPLE_FULLY_DEFINED(MAKE_TORQUE_CASE)
#undef MAKE_TORQUE_CASE
case DESCRIPTOR_ARRAY_TYPE:
case STRONG_DESCRIPTOR_ARRAY_TYPE:
DescriptorArray::cast(*this).DescriptorArrayVerify(isolate);
break;
case FOREIGN_TYPE:
break; // No interesting fields.

View File

@ -169,10 +169,6 @@ void HeapObject::HeapObjectPrint(std::ostream& os) { // NOLINT
TORQUE_INSTANCE_CHECKERS_MULTIPLE_FULLY_DEFINED(MAKE_TORQUE_CASE)
#undef MAKE_TORQUE_CASE
case DESCRIPTOR_ARRAY_TYPE:
case STRONG_DESCRIPTOR_ARRAY_TYPE:
DescriptorArray::cast(*this).DescriptorArrayPrint(os);
break;
case FOREIGN_TYPE:
Foreign::cast(*this).ForeignPrint(os);
break;

View File

@ -121,6 +121,10 @@ class V8_EXPORT_PRIVATE Factory : public FactoryBase<Factory> {
#include "torque-generated/factory.inc"
// Avoid the Torque-generated factory function to shadow the one from
// FactoryBase.
using FactoryBase::NewDescriptorArray;
Handle<Oddball> NewOddball(Handle<Map> map, const char* to_string,
Handle<Object> to_number, const char* type_of,
byte kind);

View File

@ -25,7 +25,6 @@ namespace internal {
V(Context) \
V(CoverageInfo) \
V(DataHandler) \
V(DescriptorArray) \
V(EmbedderDataArray) \
V(EphemeronHashTable) \
V(FeedbackCell) \

View File

@ -386,7 +386,6 @@ bool Heap::CreateInitialMaps() {
ALLOCATE_PRIMITIVE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol,
Context::SYMBOL_FUNCTION_INDEX)
ALLOCATE_MAP(FOREIGN_TYPE, Foreign::kSize, foreign)
ALLOCATE_VARSIZE_MAP(STRONG_DESCRIPTOR_ARRAY_TYPE, strong_descriptor_array)
ALLOCATE_PRIMITIVE_MAP(ODDBALL_TYPE, Oddball::kSize, boolean,
Context::BOOLEAN_FUNCTION_INDEX);
@ -428,8 +427,11 @@ bool Heap::CreateInitialMaps() {
TORQUE_DEFINED_FIXED_INSTANCE_TYPE_LIST(TORQUE_ALLOCATE_MAP);
#undef TORQUE_ALLOCATE_MAP
#define TORQUE_ALLOCATE_VARSIZE_MAP(NAME, Name, name) \
ALLOCATE_VARSIZE_MAP(NAME, name)
#define TORQUE_ALLOCATE_VARSIZE_MAP(NAME, Name, name) \
/* The DescriptorArray map is pre-allocated and initialized above. */ \
if (NAME != DESCRIPTOR_ARRAY_TYPE) { \
ALLOCATE_VARSIZE_MAP(NAME, name) \
}
TORQUE_DEFINED_VARSIZE_INSTANCE_TYPE_LIST(TORQUE_ALLOCATE_VARSIZE_MAP);
#undef TORQUE_ALLOCATE_VARSIZE_MAP

View File

@ -170,9 +170,7 @@ class DescriptorArray
"Weak fields extend up to the end of the header.");
static_assert(kDescriptorsOffset == kHeaderSize,
"Variable-size array follows header.");
// We use this visitor to also visitor to also visit the enum_cache, which is
// the only tagged field in the header, and placed at the end of the header.
using BodyDescriptor = FlexibleWeakBodyDescriptor<kStartOfStrongFieldsOffset>;
class BodyDescriptor;
// Layout of descriptor.
// Naming is consistent with Dictionary classes for easy templating.

View File

@ -16,8 +16,9 @@ struct DescriptorEntry {
value: JSAny|Weak<Map>|AccessorInfo|AccessorPair|ClassPositions;
}
@generateCppClass
extern class DescriptorArray extends HeapObject {
@export
@customCppClass
class DescriptorArray extends HeapObject {
const number_of_all_descriptors: uint16;
number_of_descriptors: uint16;
raw_number_of_marked_descriptors: uint16;
@ -27,5 +28,4 @@ extern class DescriptorArray extends HeapObject {
}
// A descriptor array where all values are held strongly.
extern class StrongDescriptorArray extends DescriptorArray
generates 'TNode<DescriptorArray>';
class StrongDescriptorArray extends DescriptorArray {}

View File

@ -202,10 +202,6 @@ VisitorId Map::GetVisitorId(Map map) {
case PROPERTY_CELL_TYPE:
return kVisitPropertyCell;
case DESCRIPTOR_ARRAY_TYPE:
case STRONG_DESCRIPTOR_ARRAY_TYPE:
return kVisitDescriptorArray;
case TRANSITION_ARRAY_TYPE:
return kVisitTransitionArray;

View File

@ -40,7 +40,6 @@ enum InstanceType : uint16_t;
V(CodeDataContainer) \
V(Context) \
V(DataHandler) \
V(DescriptorArray) \
V(EmbedderDataArray) \
V(EphemeronHashTable) \
V(FeedbackCell) \

View File

@ -104,7 +104,6 @@ class ZoneForwardList;
V(DataHandler) \
V(DeoptimizationData) \
V(DependentCode) \
V(DescriptorArray) \
V(EmbedderDataArray) \
V(EphemeronHashTable) \
V(ExternalOneByteString) \
@ -281,7 +280,6 @@ class ZoneForwardList;
V(ModuleContext) \
V(NonNullForeign) \
V(ScriptContext) \
V(StrongDescriptorArray) \
V(WithContext)
#define HEAP_OBJECT_TYPE_LIST(V) \

View File

@ -945,10 +945,6 @@ ReturnType BodyDescriptorApply(InstanceType type, T1 p1, T2 p2, T3 p3, T4 p4) {
p4);
case PROPERTY_ARRAY_TYPE:
return Op::template apply<PropertyArray::BodyDescriptor>(p1, p2, p3, p4);
case DESCRIPTOR_ARRAY_TYPE:
case STRONG_DESCRIPTOR_ARRAY_TYPE:
return Op::template apply<DescriptorArray::BodyDescriptor>(p1, p2, p3,
p4);
case TRANSITION_ARRAY_TYPE:
return Op::template apply<TransitionArray::BodyDescriptor>(p1, p2, p3,
p4);

View File

@ -4,6 +4,7 @@
#ifndef V8_OBJECTS_TORQUE_DEFINED_CLASSES_H_
#define V8_OBJECTS_TORQUE_DEFINED_CLASSES_H_
#include "src/objects/descriptor-array.h"
#include "src/objects/fixed-array.h"
#include "src/objects/heap-object.h"
#include "src/objects/objects.h"

View File

@ -85,8 +85,6 @@ class Symbol;
V(Map, bytecode_array_map, BytecodeArrayMap) \
V(Map, code_data_container_map, CodeDataContainerMap) \
V(Map, coverage_info_map, CoverageInfoMap) \
V(Map, descriptor_array_map, DescriptorArrayMap) \
V(Map, strong_descriptor_array_map, StrongDescriptorArrayMap) \
V(Map, fixed_double_array_map, FixedDoubleArrayMap) \
V(Map, global_dictionary_map, GlobalDictionaryMap) \
V(Map, many_closures_cell_map, ManyClosuresCellMap) \

View File

@ -85,6 +85,7 @@ static const char* const ANNOTATION_ABSTRACT = "@abstract";
static const char* const ANNOTATION_HAS_SAME_INSTANCE_TYPE_AS_PARENT =
"@hasSameInstanceTypeAsParent";
static const char* const ANNOTATION_GENERATE_CPP_CLASS = "@generateCppClass";
static const char* const ANNOTATION_CUSTOM_CPP_CLASS = "@customCppClass";
static const char* const ANNOTATION_HIGHEST_INSTANCE_TYPE_WITHIN_PARENT =
"@highestInstanceTypeWithinParentClassRange";
static const char* const ANNOTATION_LOWEST_INSTANCE_TYPE_WITHIN_PARENT =
@ -135,6 +136,7 @@ enum class ClassFlag {
kIsShape = 1 << 5,
kHasSameInstanceTypeAsParent = 1 << 6,
kGenerateCppClassDefinitions = 1 << 7,
kCustomCppClass = 1 << 8,
kHighestInstanceTypeWithinParent = 1 << 9,
kLowestInstanceTypeWithinParent = 1 << 10,
kUndefinedLayout = 1 << 11,

View File

@ -3829,7 +3829,7 @@ void CppClassGenerator::GenerateClass() {
hdr_ << "};\n\n";
if (!type_->IsExtern()) {
if (type_->ShouldGenerateFullClassDefinition()) {
GenerateClassExport(type_, hdr_, inl_);
}
}

View File

@ -889,8 +889,9 @@ base::Optional<ParseResult> MakeClassDeclaration(
child_results,
{ANNOTATION_GENERATE_PRINT, ANNOTATION_NO_VERIFIER, ANNOTATION_ABSTRACT,
ANNOTATION_HAS_SAME_INSTANCE_TYPE_AS_PARENT,
ANNOTATION_GENERATE_CPP_CLASS, ANNOTATION_GENERATE_BODY_DESCRIPTOR,
ANNOTATION_EXPORT, ANNOTATION_DO_NOT_GENERATE_CAST,
ANNOTATION_GENERATE_CPP_CLASS, ANNOTATION_CUSTOM_CPP_CLASS,
ANNOTATION_GENERATE_BODY_DESCRIPTOR, ANNOTATION_EXPORT,
ANNOTATION_DO_NOT_GENERATE_CAST,
ANNOTATION_HIGHEST_INSTANCE_TYPE_WITHIN_PARENT,
ANNOTATION_LOWEST_INSTANCE_TYPE_WITHIN_PARENT},
{ANNOTATION_RESERVE_BITS_IN_INSTANCE_TYPE,
@ -909,6 +910,9 @@ base::Optional<ParseResult> MakeClassDeclaration(
if (annotations.Contains(ANNOTATION_GENERATE_CPP_CLASS)) {
flags |= ClassFlag::kGenerateCppClassDefinitions;
}
if (annotations.Contains(ANNOTATION_CUSTOM_CPP_CLASS)) {
flags |= ClassFlag::kCustomCppClass;
}
if (annotations.Contains(ANNOTATION_DO_NOT_GENERATE_CAST)) {
flags |= ClassFlag::kDoNotGenerateCast;
}

View File

@ -287,6 +287,15 @@ const ClassType* TypeVisitor::ComputeType(
Error("Class \"", decl->name->value,
"\" requires a layout but doesn't have one");
}
if (flags & ClassFlag::kCustomCppClass) {
if (!(flags & ClassFlag::kExport)) {
Error("Only exported classes can have a custom C++ class.");
}
if (flags & ClassFlag::kExtern) {
Error("No need to specify ", ANNOTATION_CUSTOM_CPP_CLASS,
", extern classes always have a custom C++ class.");
}
}
if (flags & ClassFlag::kExtern) {
if (decl->generates) {
bool enforce_tnode_type = true;

View File

@ -683,6 +683,9 @@ class ClassType final : public AggregateType {
return flags_ & ClassFlag::kGenerateCppClassDefinitions || !IsExtern() ||
ShouldGenerateBodyDescriptor();
}
bool ShouldGenerateFullClassDefinition() const {
return !IsExtern() && !(flags_ & ClassFlag::kCustomCppClass);
}
bool ShouldExport() const { return flags_ & ClassFlag::kExport; }
bool IsShape() const { return flags_ & ClassFlag::kIsShape; }
bool HasStaticSize() const;

View File

@ -249,92 +249,92 @@ KNOWN_MAPS = {
("read_only_space", 0x02a11): (131, "BytecodeArrayMap"),
("read_only_space", 0x02a39): (161, "CodeDataContainerMap"),
("read_only_space", 0x02a61): (162, "CoverageInfoMap"),
("read_only_space", 0x02a89): (151, "DescriptorArrayMap"),
("read_only_space", 0x02ab1): (132, "FixedDoubleArrayMap"),
("read_only_space", 0x02ad9): (119, "GlobalDictionaryMap"),
("read_only_space", 0x02b01): (97, "ManyClosuresCellMap"),
("read_only_space", 0x02b29): (116, "ModuleInfoMap"),
("read_only_space", 0x02b51): (120, "NameDictionaryMap"),
("read_only_space", 0x02b79): (97, "NoClosuresCellMap"),
("read_only_space", 0x02ba1): (121, "NumberDictionaryMap"),
("read_only_space", 0x02bc9): (97, "OneClosureCellMap"),
("read_only_space", 0x02bf1): (122, "OrderedHashMapMap"),
("read_only_space", 0x02c19): (123, "OrderedHashSetMap"),
("read_only_space", 0x02c41): (124, "OrderedNameDictionaryMap"),
("read_only_space", 0x02c69): (172, "PreparseDataMap"),
("read_only_space", 0x02c91): (173, "PropertyArrayMap"),
("read_only_space", 0x02cb9): (93, "SideEffectCallHandlerInfoMap"),
("read_only_space", 0x02ce1): (93, "SideEffectFreeCallHandlerInfoMap"),
("read_only_space", 0x02d09): (93, "NextCallSideEffectFreeCallHandlerInfoMap"),
("read_only_space", 0x02d31): (125, "SimpleNumberDictionaryMap"),
("read_only_space", 0x02d59): (148, "SmallOrderedHashMapMap"),
("read_only_space", 0x02d81): (149, "SmallOrderedHashSetMap"),
("read_only_space", 0x02da9): (150, "SmallOrderedNameDictionaryMap"),
("read_only_space", 0x02dd1): (153, "SourceTextModuleMap"),
("read_only_space", 0x02df9): (154, "SyntheticModuleMap"),
("read_only_space", 0x02e21): (156, "UncompiledDataWithoutPreparseDataMap"),
("read_only_space", 0x02e49): (155, "UncompiledDataWithPreparseDataMap"),
("read_only_space", 0x02e71): (71, "WasmTypeInfoMap"),
("read_only_space", 0x02e99): (182, "WeakArrayListMap"),
("read_only_space", 0x02ec1): (118, "EphemeronHashTableMap"),
("read_only_space", 0x02ee9): (163, "EmbedderDataArrayMap"),
("read_only_space", 0x02f11): (183, "WeakCellMap"),
("read_only_space", 0x02f39): (32, "StringMap"),
("read_only_space", 0x02f61): (41, "ConsOneByteStringMap"),
("read_only_space", 0x02f89): (33, "ConsStringMap"),
("read_only_space", 0x02fb1): (37, "ThinStringMap"),
("read_only_space", 0x02fd9): (35, "SlicedStringMap"),
("read_only_space", 0x03001): (43, "SlicedOneByteStringMap"),
("read_only_space", 0x03029): (34, "ExternalStringMap"),
("read_only_space", 0x03051): (42, "ExternalOneByteStringMap"),
("read_only_space", 0x03079): (50, "UncachedExternalStringMap"),
("read_only_space", 0x030a1): (0, "InternalizedStringMap"),
("read_only_space", 0x030c9): (2, "ExternalInternalizedStringMap"),
("read_only_space", 0x030f1): (10, "ExternalOneByteInternalizedStringMap"),
("read_only_space", 0x03119): (18, "UncachedExternalInternalizedStringMap"),
("read_only_space", 0x03141): (26, "UncachedExternalOneByteInternalizedStringMap"),
("read_only_space", 0x03169): (58, "UncachedExternalOneByteStringMap"),
("read_only_space", 0x03191): (67, "SelfReferenceMarkerMap"),
("read_only_space", 0x031b9): (67, "BasicBlockCountersMarkerMap"),
("read_only_space", 0x031fd): (87, "ArrayBoilerplateDescriptionMap"),
("read_only_space", 0x032e5): (99, "InterceptorInfoMap"),
("read_only_space", 0x053f1): (72, "PromiseFulfillReactionJobTaskMap"),
("read_only_space", 0x05419): (73, "PromiseRejectReactionJobTaskMap"),
("read_only_space", 0x05441): (74, "CallableTaskMap"),
("read_only_space", 0x05469): (75, "CallbackTaskMap"),
("read_only_space", 0x05491): (76, "PromiseResolveThenableJobTaskMap"),
("read_only_space", 0x054b9): (79, "FunctionTemplateInfoMap"),
("read_only_space", 0x054e1): (80, "ObjectTemplateInfoMap"),
("read_only_space", 0x05509): (81, "AccessCheckInfoMap"),
("read_only_space", 0x05531): (82, "AccessorInfoMap"),
("read_only_space", 0x05559): (83, "AccessorPairMap"),
("read_only_space", 0x05581): (84, "AliasedArgumentsEntryMap"),
("read_only_space", 0x055a9): (85, "AllocationMementoMap"),
("read_only_space", 0x055d1): (88, "AsmWasmDataMap"),
("read_only_space", 0x055f9): (89, "AsyncGeneratorRequestMap"),
("read_only_space", 0x05621): (90, "BreakPointMap"),
("read_only_space", 0x05649): (91, "BreakPointInfoMap"),
("read_only_space", 0x05671): (92, "CachedTemplateObjectMap"),
("read_only_space", 0x05699): (94, "ClassPositionsMap"),
("read_only_space", 0x056c1): (95, "DebugInfoMap"),
("read_only_space", 0x056e9): (98, "FunctionTemplateRareDataMap"),
("read_only_space", 0x05711): (100, "InterpreterDataMap"),
("read_only_space", 0x05739): (101, "PromiseCapabilityMap"),
("read_only_space", 0x05761): (102, "PromiseReactionMap"),
("read_only_space", 0x05789): (103, "PropertyDescriptorObjectMap"),
("read_only_space", 0x057b1): (104, "PrototypeInfoMap"),
("read_only_space", 0x057d9): (105, "ScriptMap"),
("read_only_space", 0x05801): (106, "SourceTextModuleInfoEntryMap"),
("read_only_space", 0x05829): (107, "StackFrameInfoMap"),
("read_only_space", 0x05851): (108, "StackTraceFrameMap"),
("read_only_space", 0x05879): (109, "TemplateObjectDescriptionMap"),
("read_only_space", 0x058a1): (110, "Tuple2Map"),
("read_only_space", 0x058c9): (111, "WasmExceptionTagMap"),
("read_only_space", 0x058f1): (112, "WasmExportedFunctionDataMap"),
("read_only_space", 0x05919): (113, "WasmIndirectFunctionTableMap"),
("read_only_space", 0x05941): (114, "WasmJSFunctionDataMap"),
("read_only_space", 0x05969): (115, "WasmValueMap"),
("read_only_space", 0x05991): (134, "SloppyArgumentsElementsMap"),
("read_only_space", 0x02a89): (132, "FixedDoubleArrayMap"),
("read_only_space", 0x02ab1): (119, "GlobalDictionaryMap"),
("read_only_space", 0x02ad9): (97, "ManyClosuresCellMap"),
("read_only_space", 0x02b01): (116, "ModuleInfoMap"),
("read_only_space", 0x02b29): (120, "NameDictionaryMap"),
("read_only_space", 0x02b51): (97, "NoClosuresCellMap"),
("read_only_space", 0x02b79): (121, "NumberDictionaryMap"),
("read_only_space", 0x02ba1): (97, "OneClosureCellMap"),
("read_only_space", 0x02bc9): (122, "OrderedHashMapMap"),
("read_only_space", 0x02bf1): (123, "OrderedHashSetMap"),
("read_only_space", 0x02c19): (124, "OrderedNameDictionaryMap"),
("read_only_space", 0x02c41): (172, "PreparseDataMap"),
("read_only_space", 0x02c69): (173, "PropertyArrayMap"),
("read_only_space", 0x02c91): (93, "SideEffectCallHandlerInfoMap"),
("read_only_space", 0x02cb9): (93, "SideEffectFreeCallHandlerInfoMap"),
("read_only_space", 0x02ce1): (93, "NextCallSideEffectFreeCallHandlerInfoMap"),
("read_only_space", 0x02d09): (125, "SimpleNumberDictionaryMap"),
("read_only_space", 0x02d31): (148, "SmallOrderedHashMapMap"),
("read_only_space", 0x02d59): (149, "SmallOrderedHashSetMap"),
("read_only_space", 0x02d81): (150, "SmallOrderedNameDictionaryMap"),
("read_only_space", 0x02da9): (153, "SourceTextModuleMap"),
("read_only_space", 0x02dd1): (154, "SyntheticModuleMap"),
("read_only_space", 0x02df9): (156, "UncompiledDataWithoutPreparseDataMap"),
("read_only_space", 0x02e21): (155, "UncompiledDataWithPreparseDataMap"),
("read_only_space", 0x02e49): (71, "WasmTypeInfoMap"),
("read_only_space", 0x02e71): (182, "WeakArrayListMap"),
("read_only_space", 0x02e99): (118, "EphemeronHashTableMap"),
("read_only_space", 0x02ec1): (163, "EmbedderDataArrayMap"),
("read_only_space", 0x02ee9): (183, "WeakCellMap"),
("read_only_space", 0x02f11): (32, "StringMap"),
("read_only_space", 0x02f39): (41, "ConsOneByteStringMap"),
("read_only_space", 0x02f61): (33, "ConsStringMap"),
("read_only_space", 0x02f89): (37, "ThinStringMap"),
("read_only_space", 0x02fb1): (35, "SlicedStringMap"),
("read_only_space", 0x02fd9): (43, "SlicedOneByteStringMap"),
("read_only_space", 0x03001): (34, "ExternalStringMap"),
("read_only_space", 0x03029): (42, "ExternalOneByteStringMap"),
("read_only_space", 0x03051): (50, "UncachedExternalStringMap"),
("read_only_space", 0x03079): (0, "InternalizedStringMap"),
("read_only_space", 0x030a1): (2, "ExternalInternalizedStringMap"),
("read_only_space", 0x030c9): (10, "ExternalOneByteInternalizedStringMap"),
("read_only_space", 0x030f1): (18, "UncachedExternalInternalizedStringMap"),
("read_only_space", 0x03119): (26, "UncachedExternalOneByteInternalizedStringMap"),
("read_only_space", 0x03141): (58, "UncachedExternalOneByteStringMap"),
("read_only_space", 0x03169): (67, "SelfReferenceMarkerMap"),
("read_only_space", 0x03191): (67, "BasicBlockCountersMarkerMap"),
("read_only_space", 0x031d5): (87, "ArrayBoilerplateDescriptionMap"),
("read_only_space", 0x032bd): (99, "InterceptorInfoMap"),
("read_only_space", 0x053c9): (72, "PromiseFulfillReactionJobTaskMap"),
("read_only_space", 0x053f1): (73, "PromiseRejectReactionJobTaskMap"),
("read_only_space", 0x05419): (74, "CallableTaskMap"),
("read_only_space", 0x05441): (75, "CallbackTaskMap"),
("read_only_space", 0x05469): (76, "PromiseResolveThenableJobTaskMap"),
("read_only_space", 0x05491): (79, "FunctionTemplateInfoMap"),
("read_only_space", 0x054b9): (80, "ObjectTemplateInfoMap"),
("read_only_space", 0x054e1): (81, "AccessCheckInfoMap"),
("read_only_space", 0x05509): (82, "AccessorInfoMap"),
("read_only_space", 0x05531): (83, "AccessorPairMap"),
("read_only_space", 0x05559): (84, "AliasedArgumentsEntryMap"),
("read_only_space", 0x05581): (85, "AllocationMementoMap"),
("read_only_space", 0x055a9): (88, "AsmWasmDataMap"),
("read_only_space", 0x055d1): (89, "AsyncGeneratorRequestMap"),
("read_only_space", 0x055f9): (90, "BreakPointMap"),
("read_only_space", 0x05621): (91, "BreakPointInfoMap"),
("read_only_space", 0x05649): (92, "CachedTemplateObjectMap"),
("read_only_space", 0x05671): (94, "ClassPositionsMap"),
("read_only_space", 0x05699): (95, "DebugInfoMap"),
("read_only_space", 0x056c1): (98, "FunctionTemplateRareDataMap"),
("read_only_space", 0x056e9): (100, "InterpreterDataMap"),
("read_only_space", 0x05711): (101, "PromiseCapabilityMap"),
("read_only_space", 0x05739): (102, "PromiseReactionMap"),
("read_only_space", 0x05761): (103, "PropertyDescriptorObjectMap"),
("read_only_space", 0x05789): (104, "PrototypeInfoMap"),
("read_only_space", 0x057b1): (105, "ScriptMap"),
("read_only_space", 0x057d9): (106, "SourceTextModuleInfoEntryMap"),
("read_only_space", 0x05801): (107, "StackFrameInfoMap"),
("read_only_space", 0x05829): (108, "StackTraceFrameMap"),
("read_only_space", 0x05851): (109, "TemplateObjectDescriptionMap"),
("read_only_space", 0x05879): (110, "Tuple2Map"),
("read_only_space", 0x058a1): (111, "WasmExceptionTagMap"),
("read_only_space", 0x058c9): (112, "WasmExportedFunctionDataMap"),
("read_only_space", 0x058f1): (113, "WasmIndirectFunctionTableMap"),
("read_only_space", 0x05919): (114, "WasmJSFunctionDataMap"),
("read_only_space", 0x05941): (115, "WasmValueMap"),
("read_only_space", 0x05969): (134, "SloppyArgumentsElementsMap"),
("read_only_space", 0x05991): (151, "DescriptorArrayMap"),
("read_only_space", 0x059b9): (171, "OnHeapBasicBlockProfilerDataMap"),
("read_only_space", 0x059e1): (180, "WasmCapiFunctionDataMap"),
("read_only_space", 0x05a09): (168, "InternalClassMap"),
@ -386,32 +386,32 @@ KNOWN_OBJECTS = {
("read_only_space", 0x02821): "TerminationException",
("read_only_space", 0x02889): "OptimizedOut",
("read_only_space", 0x028e9): "StaleRegister",
("read_only_space", 0x031e1): "EmptyPropertyArray",
("read_only_space", 0x031e9): "EmptyByteArray",
("read_only_space", 0x031f1): "EmptyObjectBoilerplateDescription",
("read_only_space", 0x03225): "EmptyArrayBoilerplateDescription",
("read_only_space", 0x03231): "EmptyClosureFeedbackCellArray",
("read_only_space", 0x03239): "EmptySlowElementDictionary",
("read_only_space", 0x0325d): "EmptyOrderedHashMap",
("read_only_space", 0x03271): "EmptyOrderedHashSet",
("read_only_space", 0x03285): "EmptyFeedbackMetadata",
("read_only_space", 0x03291): "EmptyPropertyCell",
("read_only_space", 0x032a5): "EmptyPropertyDictionary",
("read_only_space", 0x032cd): "EmptyOrderedPropertyDictionary",
("read_only_space", 0x0330d): "NoOpInterceptorInfo",
("read_only_space", 0x03335): "EmptyWeakArrayList",
("read_only_space", 0x03341): "InfinityValue",
("read_only_space", 0x0334d): "MinusZeroValue",
("read_only_space", 0x03359): "MinusInfinityValue",
("read_only_space", 0x03365): "SelfReferenceMarker",
("read_only_space", 0x033a5): "BasicBlockCountersMarker",
("read_only_space", 0x033e9): "OffHeapTrampolineRelocationInfo",
("read_only_space", 0x033f5): "TrampolineTrivialCodeDataContainer",
("read_only_space", 0x03401): "TrampolinePromiseRejectionCodeDataContainer",
("read_only_space", 0x0340d): "GlobalThisBindingScopeInfo",
("read_only_space", 0x03445): "EmptyFunctionScopeInfo",
("read_only_space", 0x0346d): "NativeScopeInfo",
("read_only_space", 0x03489): "HashSeed",
("read_only_space", 0x031b9): "EmptyPropertyArray",
("read_only_space", 0x031c1): "EmptyByteArray",
("read_only_space", 0x031c9): "EmptyObjectBoilerplateDescription",
("read_only_space", 0x031fd): "EmptyArrayBoilerplateDescription",
("read_only_space", 0x03209): "EmptyClosureFeedbackCellArray",
("read_only_space", 0x03211): "EmptySlowElementDictionary",
("read_only_space", 0x03235): "EmptyOrderedHashMap",
("read_only_space", 0x03249): "EmptyOrderedHashSet",
("read_only_space", 0x0325d): "EmptyFeedbackMetadata",
("read_only_space", 0x03269): "EmptyPropertyCell",
("read_only_space", 0x0327d): "EmptyPropertyDictionary",
("read_only_space", 0x032a5): "EmptyOrderedPropertyDictionary",
("read_only_space", 0x032e5): "NoOpInterceptorInfo",
("read_only_space", 0x0330d): "EmptyWeakArrayList",
("read_only_space", 0x03319): "InfinityValue",
("read_only_space", 0x03325): "MinusZeroValue",
("read_only_space", 0x03331): "MinusInfinityValue",
("read_only_space", 0x0333d): "SelfReferenceMarker",
("read_only_space", 0x0337d): "BasicBlockCountersMarker",
("read_only_space", 0x033c1): "OffHeapTrampolineRelocationInfo",
("read_only_space", 0x033cd): "TrampolineTrivialCodeDataContainer",
("read_only_space", 0x033d9): "TrampolinePromiseRejectionCodeDataContainer",
("read_only_space", 0x033e5): "GlobalThisBindingScopeInfo",
("read_only_space", 0x0341d): "EmptyFunctionScopeInfo",
("read_only_space", 0x03445): "NativeScopeInfo",
("read_only_space", 0x03461): "HashSeed",
("old_space", 0x02115): "ArgumentsIteratorAccessor",
("old_space", 0x02159): "ArrayLengthAccessor",
("old_space", 0x0219d): "BoundFunctionLengthAccessor",