[sandbox] Sandboxify WasmTypeInfo

This CL changes the WasmTypeInfo class to have a direct ExternalPointer
to the native type structure instead of using a Foreign. This in turn
makes it possible to use a unique pointer tag for that external pointer
when the sandbox is enabled.

Bug: v8:10391, v8:12949
Change-Id: Ifee4d2103cabfa6a7299d0d09e06d387034e5f8f
Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3829085
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Samuel Groß <saelo@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82504}
This commit is contained in:
Samuel Groß 2022-08-16 12:06:49 +02:00 committed by V8 LUCI CQ
parent 8d76f6d7cb
commit f1033c43b7
11 changed files with 156 additions and 137 deletions

View File

@ -389,7 +389,8 @@ constexpr uint64_t kAllExternalPointerTypeTags[] = {
V(kAccessorInfoJsGetterTag, sandboxed, TAG(18)) \ V(kAccessorInfoJsGetterTag, sandboxed, TAG(18)) \
V(kAccessorInfoSetterTag, sandboxed, TAG(19)) \ V(kAccessorInfoSetterTag, sandboxed, TAG(19)) \
V(kWasmInternalFunctionCallTargetTag, sandboxed, TAG(20)) \ V(kWasmInternalFunctionCallTargetTag, sandboxed, TAG(20)) \
V(kWasmContinuationJmpbufTag, sandboxed, TAG(21)) V(kWasmTypeInfoNativeTypeTag, sandboxed, TAG(21)) \
V(kWasmContinuationJmpbufTag, sandboxed, TAG(22))
// All external pointer tags. // All external pointer tags.
#define ALL_EXTERNAL_POINTER_TAGS(V) \ #define ALL_EXTERNAL_POINTER_TAGS(V) \

View File

@ -738,7 +738,7 @@ const kWasmValueTypeBitFieldOffset:
macro IsWord16WasmArrayMap(map: Map): bool { macro IsWord16WasmArrayMap(map: Map): bool {
const arrayTypePtr: RawPtr<int32> = %RawDownCast<RawPtr<int32>>( const arrayTypePtr: RawPtr<int32> = %RawDownCast<RawPtr<int32>>(
WasmTypeInfo(map).foreign_address_ptr + kWasmArrayTypeRepOffset + WasmTypeInfo(map).native_type_ptr + kWasmArrayTypeRepOffset +
kWasmValueTypeBitFieldOffset); kWasmValueTypeBitFieldOffset);
const arrayTypeRef: &int32 = const arrayTypeRef: &int32 =
torque_internal::unsafe::NewOffHeapReference(arrayTypePtr); torque_internal::unsafe::NewOffHeapReference(arrayTypePtr);

View File

@ -1167,6 +1167,11 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
object, WasmInternalFunction::kCallTargetOffset, object, WasmInternalFunction::kCallTargetOffset,
kWasmInternalFunctionCallTargetTag); kWasmInternalFunctionCallTargetTag);
} }
TNode<RawPtrT> LoadWasmTypeInfoNativeTypePtr(TNode<WasmTypeInfo> object) {
return LoadExternalPointerFromObject(
object, WasmTypeInfo::kNativeTypeOffset, kWasmTypeInfoNativeTypeTag);
}
#endif // V8_ENABLE_WEBASSEMBLY #endif // V8_ENABLE_WEBASSEMBLY
TNode<RawPtrT> LoadJSTypedArrayExternalPointerPtr( TNode<RawPtrT> LoadJSTypedArrayExternalPointerPtr(

View File

@ -1861,7 +1861,7 @@ void AsmWasmData::AsmWasmDataPrint(std::ostream& os) {
void WasmTypeInfo::WasmTypeInfoPrint(std::ostream& os) { void WasmTypeInfo::WasmTypeInfoPrint(std::ostream& os) {
PrintHeader(os, "WasmTypeInfo"); PrintHeader(os, "WasmTypeInfo");
os << "\n - type address: " << reinterpret_cast<void*>(foreign_address()); os << "\n - type address: " << reinterpret_cast<void*>(native_type());
// TODO(manoskouk): Print supertype info. // TODO(manoskouk): Print supertype info.
os << "\n - supertypes: "; os << "\n - supertypes: ";
for (int i = 0; i < supertypes_length(); i++) { for (int i = 0; i < supertypes_length(); i++) {

View File

@ -1596,7 +1596,7 @@ Handle<WasmTypeInfo> Factory::NewWasmTypeInfo(
for (size_t i = 0; i < supertypes.size(); i++) { for (size_t i = 0; i < supertypes.size(); i++) {
result.set_supertypes(static_cast<int>(i), *supertypes[i]); result.set_supertypes(static_cast<int>(i), *supertypes[i]);
} }
result.init_foreign_address(isolate(), type_address); result.init_native_type(isolate(), type_address);
result.set_instance(*instance); result.set_instance(*instance);
return handle(result, isolate()); return handle(result, isolate());
} }
@ -1788,9 +1788,9 @@ Handle<WasmArray> Factory::NewWasmArrayFromElements(
Handle<WasmArray> Factory::NewWasmArrayFromMemory(uint32_t length, Handle<WasmArray> Factory::NewWasmArrayFromMemory(uint32_t length,
Handle<Map> map, Handle<Map> map,
Address source) { Address source) {
wasm::ValueType element_type = reinterpret_cast<wasm::ArrayType*>( wasm::ValueType element_type =
map->wasm_type_info().foreign_address()) reinterpret_cast<wasm::ArrayType*>(map->wasm_type_info().native_type())
->element_type(); ->element_type();
DCHECK(element_type.is_numeric()); DCHECK(element_type.is_numeric());
HeapObject raw = HeapObject raw =
AllocateRaw(WasmArray::SizeFor(*map, length), AllocationType::kYoung); AllocateRaw(WasmArray::SizeFor(*map, length), AllocationType::kYoung);

View File

@ -713,10 +713,11 @@ class WasmTypeInfo::BodyDescriptor final : public BodyDescriptorBase {
template <typename ObjectVisitor> template <typename ObjectVisitor>
static inline void IterateBody(Map map, HeapObject obj, int object_size, static inline void IterateBody(Map map, HeapObject obj, int object_size,
ObjectVisitor* v) { ObjectVisitor* v) {
Foreign::BodyDescriptor::IterateBody<ObjectVisitor>(map, obj, object_size,
v);
IteratePointer(obj, kInstanceOffset, v); IteratePointer(obj, kInstanceOffset, v);
IteratePointers(obj, kSupertypesOffset, SizeOf(map, obj), v); IteratePointers(obj, kSupertypesOffset, SizeOf(map, obj), v);
v->VisitExternalPointer(obj, obj.RawExternalPointerField(kNativeTypeOffset),
kWasmTypeInfoNativeTypeTag);
} }
static inline int SizeOf(Map map, HeapObject object) { static inline int SizeOf(Map map, HeapObject object) {

View File

@ -723,8 +723,8 @@ RUNTIME_FUNCTION(Runtime_WasmArrayNewSegment) {
uint32_t length = args.positive_smi_value_at(3); uint32_t length = args.positive_smi_value_at(3);
Handle<Map> rtt(Map::cast(args[4]), isolate); Handle<Map> rtt(Map::cast(args[4]), isolate);
wasm::ArrayType* type = reinterpret_cast<wasm::ArrayType*>( wasm::ArrayType* type =
rtt->wasm_type_info().foreign_address()); reinterpret_cast<wasm::ArrayType*>(rtt->wasm_type_info().native_type());
uint32_t element_size = type->element_type().value_kind_size(); uint32_t element_size = type->element_type().value_kind_size();
// This check also implies no overflow. // This check also implies no overflow.

View File

@ -330,10 +330,15 @@ PRIMITIVE_ACCESSORS(WasmIndirectFunctionTable, targets, Address*,
OPTIONAL_ACCESSORS(WasmIndirectFunctionTable, managed_native_allocations, OPTIONAL_ACCESSORS(WasmIndirectFunctionTable, managed_native_allocations,
Foreign, kManagedNativeAllocationsOffset) Foreign, kManagedNativeAllocationsOffset)
// WasmTypeInfo
EXTERNAL_POINTER_ACCESSORS(WasmTypeInfo, native_type, Address,
kNativeTypeOffset, kWasmTypeInfoNativeTypeTag)
#undef OPTIONAL_ACCESSORS #undef OPTIONAL_ACCESSORS
#undef READ_PRIMITIVE_FIELD #undef READ_PRIMITIVE_FIELD
#undef WRITE_PRIMITIVE_FIELD #undef WRITE_PRIMITIVE_FIELD
#undef PRIMITIVE_ACCESSORS #undef PRIMITIVE_ACCESSORS
#undef SANDBOXED_POINTER_ACCESSORS
wasm::ValueType WasmTableObject::type() { wasm::ValueType WasmTableObject::type() {
return wasm::ValueType::FromRawBitField(raw_type()); return wasm::ValueType::FromRawBitField(raw_type());
@ -504,17 +509,17 @@ void WasmObject::WriteValueAt(Isolate* isolate, Handle<HeapObject> obj,
wasm::StructType* WasmStruct::type(Map map) { wasm::StructType* WasmStruct::type(Map map) {
WasmTypeInfo type_info = map.wasm_type_info(); WasmTypeInfo type_info = map.wasm_type_info();
return reinterpret_cast<wasm::StructType*>(type_info.foreign_address()); return reinterpret_cast<wasm::StructType*>(type_info.native_type());
} }
wasm::StructType* WasmStruct::GcSafeType(Map map) { wasm::StructType* WasmStruct::GcSafeType(Map map) {
DCHECK_EQ(WASM_STRUCT_TYPE, map.instance_type()); DCHECK_EQ(WASM_STRUCT_TYPE, map.instance_type());
HeapObject raw = HeapObject::cast(map.constructor_or_back_pointer()); HeapObject raw = HeapObject::cast(map.constructor_or_back_pointer());
// The {Foreign} might be in the middle of being moved, which is why we // The {WasmTypeInfo} might be in the middle of being moved, which is why we
// can't read its map for a checked cast. But we can rely on its payload // can't read its map for a checked cast. But we can rely on its native type
// being intact in the old location. // pointer being intact in the old location.
Foreign foreign = Foreign::unchecked_cast(raw); WasmTypeInfo type_info = WasmTypeInfo::unchecked_cast(raw);
return reinterpret_cast<wasm::StructType*>(foreign.foreign_address()); return reinterpret_cast<wasm::StructType*>(type_info.native_type());
} }
int WasmStruct::Size(const wasm::StructType* type) { int WasmStruct::Size(const wasm::StructType* type) {
@ -580,17 +585,17 @@ void WasmStruct::SetField(Isolate* isolate, Handle<WasmStruct> obj,
wasm::ArrayType* WasmArray::type(Map map) { wasm::ArrayType* WasmArray::type(Map map) {
DCHECK_EQ(WASM_ARRAY_TYPE, map.instance_type()); DCHECK_EQ(WASM_ARRAY_TYPE, map.instance_type());
WasmTypeInfo type_info = map.wasm_type_info(); WasmTypeInfo type_info = map.wasm_type_info();
return reinterpret_cast<wasm::ArrayType*>(type_info.foreign_address()); return reinterpret_cast<wasm::ArrayType*>(type_info.native_type());
} }
wasm::ArrayType* WasmArray::GcSafeType(Map map) { wasm::ArrayType* WasmArray::GcSafeType(Map map) {
DCHECK_EQ(WASM_ARRAY_TYPE, map.instance_type()); DCHECK_EQ(WASM_ARRAY_TYPE, map.instance_type());
HeapObject raw = HeapObject::cast(map.constructor_or_back_pointer()); HeapObject raw = HeapObject::cast(map.constructor_or_back_pointer());
// The {Foreign} might be in the middle of being moved, which is why we // The {WasmTypeInfo} might be in the middle of being moved, which is why we
// can't read its map for a checked cast. But we can rely on its payload // can't read its map for a checked cast. But we can rely on its native type
// being intact in the old location. // pointer being intact in the old location.
Foreign foreign = Foreign::unchecked_cast(raw); WasmTypeInfo type_info = WasmTypeInfo::unchecked_cast(raw);
return reinterpret_cast<wasm::ArrayType*>(foreign.foreign_address()); return reinterpret_cast<wasm::ArrayType*>(type_info.native_type());
} }
wasm::ArrayType* WasmArray::type() const { return type(map()); } wasm::ArrayType* WasmArray::type() const { return type(map()); }

View File

@ -901,8 +901,11 @@ class AsmWasmData : public TorqueGeneratedAsmWasmData<AsmWasmData, Struct> {
TQ_OBJECT_CONSTRUCTORS(AsmWasmData) TQ_OBJECT_CONSTRUCTORS(AsmWasmData)
}; };
class WasmTypeInfo : public TorqueGeneratedWasmTypeInfo<WasmTypeInfo, Foreign> { class WasmTypeInfo
: public TorqueGeneratedWasmTypeInfo<WasmTypeInfo, HeapObject> {
public: public:
DECL_EXTERNAL_POINTER_ACCESSORS(native_type, Address);
DECL_PRINTER(WasmTypeInfo) DECL_PRINTER(WasmTypeInfo)
class BodyDescriptor; class BodyDescriptor;

View File

@ -179,7 +179,7 @@ extern class AsmWasmData extends Struct {
uses_bitset: HeapNumber; uses_bitset: HeapNumber;
} }
extern class WasmTypeInfo extends Foreign { extern class WasmTypeInfo extends HeapObject {
// We must make sure that the StructType/ArrayType, which is allocated in // We must make sure that the StructType/ArrayType, which is allocated in
// the WasmModule's "signature_zone", stays around as long as there are // the WasmModule's "signature_zone", stays around as long as there are
// HeapObjects referring to it. Short term, we simply keep a reference to // HeapObjects referring to it. Short term, we simply keep a reference to
@ -188,11 +188,15 @@ extern class WasmTypeInfo extends Foreign {
// lifetime separately by having WasmModule refer to it via std::shared_ptr, // lifetime separately by having WasmModule refer to it via std::shared_ptr,
// and introduce a new link from here to just that zone using a Managed<...>. // and introduce a new link from here to just that zone using a Managed<...>.
// Details: https://bit.ly/2UxD4hW // Details: https://bit.ly/2UxD4hW
native_type: ExternalPointer;
instance: WasmInstanceObject; instance: WasmInstanceObject;
const supertypes_length: Smi; const supertypes_length: Smi;
supertypes[supertypes_length]: Object; supertypes[supertypes_length]: Object;
} }
extern operator '.native_type_ptr' macro LoadWasmTypeInfoNativeTypePtr(
WasmTypeInfo): RawPtr;
// WasmObject corresponds to data ref types which are WasmStruct and WasmArray. // WasmObject corresponds to data ref types which are WasmStruct and WasmArray.
@abstract @abstract
extern class WasmObject extends JSReceiver { extern class WasmObject extends JSReceiver {

View File

@ -109,66 +109,66 @@ INSTANCE_TYPES = {
202: "EXPORTED_SUB_CLASS_TYPE", 202: "EXPORTED_SUB_CLASS_TYPE",
203: "EXPORTED_SUB_CLASS2_TYPE", 203: "EXPORTED_SUB_CLASS2_TYPE",
204: "FOREIGN_TYPE", 204: "FOREIGN_TYPE",
205: "WASM_TYPE_INFO_TYPE", 205: "AWAIT_CONTEXT_TYPE",
206: "AWAIT_CONTEXT_TYPE", 206: "BLOCK_CONTEXT_TYPE",
207: "BLOCK_CONTEXT_TYPE", 207: "CATCH_CONTEXT_TYPE",
208: "CATCH_CONTEXT_TYPE", 208: "DEBUG_EVALUATE_CONTEXT_TYPE",
209: "DEBUG_EVALUATE_CONTEXT_TYPE", 209: "EVAL_CONTEXT_TYPE",
210: "EVAL_CONTEXT_TYPE", 210: "FUNCTION_CONTEXT_TYPE",
211: "FUNCTION_CONTEXT_TYPE", 211: "MODULE_CONTEXT_TYPE",
212: "MODULE_CONTEXT_TYPE", 212: "NATIVE_CONTEXT_TYPE",
213: "NATIVE_CONTEXT_TYPE", 213: "SCRIPT_CONTEXT_TYPE",
214: "SCRIPT_CONTEXT_TYPE", 214: "WITH_CONTEXT_TYPE",
215: "WITH_CONTEXT_TYPE", 215: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE",
216: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_TYPE", 216: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_AND_JOB_TYPE",
217: "UNCOMPILED_DATA_WITH_PREPARSE_DATA_AND_JOB_TYPE", 217: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE",
218: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_TYPE", 218: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_WITH_JOB_TYPE",
219: "UNCOMPILED_DATA_WITHOUT_PREPARSE_DATA_WITH_JOB_TYPE", 219: "WASM_FUNCTION_DATA_TYPE",
220: "WASM_FUNCTION_DATA_TYPE", 220: "WASM_CAPI_FUNCTION_DATA_TYPE",
221: "WASM_CAPI_FUNCTION_DATA_TYPE", 221: "WASM_EXPORTED_FUNCTION_DATA_TYPE",
222: "WASM_EXPORTED_FUNCTION_DATA_TYPE", 222: "WASM_JS_FUNCTION_DATA_TYPE",
223: "WASM_JS_FUNCTION_DATA_TYPE", 223: "SMALL_ORDERED_HASH_MAP_TYPE",
224: "SMALL_ORDERED_HASH_MAP_TYPE", 224: "SMALL_ORDERED_HASH_SET_TYPE",
225: "SMALL_ORDERED_HASH_SET_TYPE", 225: "SMALL_ORDERED_NAME_DICTIONARY_TYPE",
226: "SMALL_ORDERED_NAME_DICTIONARY_TYPE", 226: "ABSTRACT_INTERNAL_CLASS_SUBCLASS1_TYPE",
227: "ABSTRACT_INTERNAL_CLASS_SUBCLASS1_TYPE", 227: "ABSTRACT_INTERNAL_CLASS_SUBCLASS2_TYPE",
228: "ABSTRACT_INTERNAL_CLASS_SUBCLASS2_TYPE", 228: "DESCRIPTOR_ARRAY_TYPE",
229: "DESCRIPTOR_ARRAY_TYPE", 229: "STRONG_DESCRIPTOR_ARRAY_TYPE",
230: "STRONG_DESCRIPTOR_ARRAY_TYPE", 230: "SOURCE_TEXT_MODULE_TYPE",
231: "SOURCE_TEXT_MODULE_TYPE", 231: "SYNTHETIC_MODULE_TYPE",
232: "SYNTHETIC_MODULE_TYPE", 232: "WEAK_FIXED_ARRAY_TYPE",
233: "WEAK_FIXED_ARRAY_TYPE", 233: "TRANSITION_ARRAY_TYPE",
234: "TRANSITION_ARRAY_TYPE", 234: "ACCESSOR_INFO_TYPE",
235: "ACCESSOR_INFO_TYPE", 235: "CALL_HANDLER_INFO_TYPE",
236: "CALL_HANDLER_INFO_TYPE", 236: "CELL_TYPE",
237: "CELL_TYPE", 237: "CODE_TYPE",
238: "CODE_TYPE", 238: "CODE_DATA_CONTAINER_TYPE",
239: "CODE_DATA_CONTAINER_TYPE", 239: "COVERAGE_INFO_TYPE",
240: "COVERAGE_INFO_TYPE", 240: "EMBEDDER_DATA_ARRAY_TYPE",
241: "EMBEDDER_DATA_ARRAY_TYPE", 241: "FEEDBACK_METADATA_TYPE",
242: "FEEDBACK_METADATA_TYPE", 242: "FEEDBACK_VECTOR_TYPE",
243: "FEEDBACK_VECTOR_TYPE", 243: "FILLER_TYPE",
244: "FILLER_TYPE", 244: "FREE_SPACE_TYPE",
245: "FREE_SPACE_TYPE", 245: "INTERNAL_CLASS_TYPE",
246: "INTERNAL_CLASS_TYPE", 246: "INTERNAL_CLASS_WITH_STRUCT_ELEMENTS_TYPE",
247: "INTERNAL_CLASS_WITH_STRUCT_ELEMENTS_TYPE", 247: "MAP_TYPE",
248: "MAP_TYPE", 248: "MEGA_DOM_HANDLER_TYPE",
249: "MEGA_DOM_HANDLER_TYPE", 249: "ON_HEAP_BASIC_BLOCK_PROFILER_DATA_TYPE",
250: "ON_HEAP_BASIC_BLOCK_PROFILER_DATA_TYPE", 250: "PREPARSE_DATA_TYPE",
251: "PREPARSE_DATA_TYPE", 251: "PROPERTY_ARRAY_TYPE",
252: "PROPERTY_ARRAY_TYPE", 252: "PROPERTY_CELL_TYPE",
253: "PROPERTY_CELL_TYPE", 253: "SCOPE_INFO_TYPE",
254: "SCOPE_INFO_TYPE", 254: "SHARED_FUNCTION_INFO_TYPE",
255: "SHARED_FUNCTION_INFO_TYPE", 255: "SMI_BOX_TYPE",
256: "SMI_BOX_TYPE", 256: "SMI_PAIR_TYPE",
257: "SMI_PAIR_TYPE", 257: "SORT_STATE_TYPE",
258: "SORT_STATE_TYPE", 258: "SWISS_NAME_DICTIONARY_TYPE",
259: "SWISS_NAME_DICTIONARY_TYPE", 259: "WASM_API_FUNCTION_REF_TYPE",
260: "WASM_API_FUNCTION_REF_TYPE", 260: "WASM_CONTINUATION_OBJECT_TYPE",
261: "WASM_CONTINUATION_OBJECT_TYPE", 261: "WASM_INTERNAL_FUNCTION_TYPE",
262: "WASM_INTERNAL_FUNCTION_TYPE", 262: "WASM_RESUME_DATA_TYPE",
263: "WASM_RESUME_DATA_TYPE", 263: "WASM_STRING_VIEW_ITER_TYPE",
264: "WASM_STRING_VIEW_ITER_TYPE", 264: "WASM_TYPE_INFO_TYPE",
265: "WEAK_ARRAY_LIST_TYPE", 265: "WEAK_ARRAY_LIST_TYPE",
266: "WEAK_CELL_TYPE", 266: "WEAK_CELL_TYPE",
267: "WASM_ARRAY_TYPE", 267: "WASM_ARRAY_TYPE",
@ -280,16 +280,16 @@ INSTANCE_TYPES = {
# List of known V8 maps. # List of known V8 maps.
KNOWN_MAPS = { KNOWN_MAPS = {
("read_only_space", 0x02139): (248, "MetaMap"), ("read_only_space", 0x02139): (247, "MetaMap"),
("read_only_space", 0x02161): (131, "NullMap"), ("read_only_space", 0x02161): (131, "NullMap"),
("read_only_space", 0x02189): (230, "StrongDescriptorArrayMap"), ("read_only_space", 0x02189): (229, "StrongDescriptorArrayMap"),
("read_only_space", 0x021b1): (265, "WeakArrayListMap"), ("read_only_space", 0x021b1): (265, "WeakArrayListMap"),
("read_only_space", 0x021f5): (155, "EnumCacheMap"), ("read_only_space", 0x021f5): (155, "EnumCacheMap"),
("read_only_space", 0x02229): (176, "FixedArrayMap"), ("read_only_space", 0x02229): (176, "FixedArrayMap"),
("read_only_space", 0x02275): (8, "OneByteInternalizedStringMap"), ("read_only_space", 0x02275): (8, "OneByteInternalizedStringMap"),
("read_only_space", 0x022c1): (245, "FreeSpaceMap"), ("read_only_space", 0x022c1): (244, "FreeSpaceMap"),
("read_only_space", 0x022e9): (244, "OnePointerFillerMap"), ("read_only_space", 0x022e9): (243, "OnePointerFillerMap"),
("read_only_space", 0x02311): (244, "TwoPointerFillerMap"), ("read_only_space", 0x02311): (243, "TwoPointerFillerMap"),
("read_only_space", 0x02339): (131, "UninitializedMap"), ("read_only_space", 0x02339): (131, "UninitializedMap"),
("read_only_space", 0x023b1): (131, "UndefinedMap"), ("read_only_space", 0x023b1): (131, "UndefinedMap"),
("read_only_space", 0x023f5): (130, "HeapNumberMap"), ("read_only_space", 0x023f5): (130, "HeapNumberMap"),
@ -300,15 +300,15 @@ KNOWN_MAPS = {
("read_only_space", 0x0257d): (177, "HashTableMap"), ("read_only_space", 0x0257d): (177, "HashTableMap"),
("read_only_space", 0x025a5): (128, "SymbolMap"), ("read_only_space", 0x025a5): (128, "SymbolMap"),
("read_only_space", 0x025cd): (40, "OneByteStringMap"), ("read_only_space", 0x025cd): (40, "OneByteStringMap"),
("read_only_space", 0x025f5): (254, "ScopeInfoMap"), ("read_only_space", 0x025f5): (253, "ScopeInfoMap"),
("read_only_space", 0x0261d): (255, "SharedFunctionInfoMap"), ("read_only_space", 0x0261d): (254, "SharedFunctionInfoMap"),
("read_only_space", 0x02645): (238, "CodeMap"), ("read_only_space", 0x02645): (237, "CodeMap"),
("read_only_space", 0x0266d): (237, "CellMap"), ("read_only_space", 0x0266d): (236, "CellMap"),
("read_only_space", 0x02695): (253, "GlobalPropertyCellMap"), ("read_only_space", 0x02695): (252, "GlobalPropertyCellMap"),
("read_only_space", 0x026bd): (204, "ForeignMap"), ("read_only_space", 0x026bd): (204, "ForeignMap"),
("read_only_space", 0x026e5): (234, "TransitionArrayMap"), ("read_only_space", 0x026e5): (233, "TransitionArrayMap"),
("read_only_space", 0x0270d): (45, "ThinOneByteStringMap"), ("read_only_space", 0x0270d): (45, "ThinOneByteStringMap"),
("read_only_space", 0x02735): (243, "FeedbackVectorMap"), ("read_only_space", 0x02735): (242, "FeedbackVectorMap"),
("read_only_space", 0x0276d): (131, "ArgumentsMarkerMap"), ("read_only_space", 0x0276d): (131, "ArgumentsMarkerMap"),
("read_only_space", 0x027cd): (131, "ExceptionMap"), ("read_only_space", 0x027cd): (131, "ExceptionMap"),
("read_only_space", 0x02829): (131, "TerminationExceptionMap"), ("read_only_space", 0x02829): (131, "TerminationExceptionMap"),
@ -316,17 +316,17 @@ KNOWN_MAPS = {
("read_only_space", 0x028f1): (131, "StaleRegisterMap"), ("read_only_space", 0x028f1): (131, "StaleRegisterMap"),
("read_only_space", 0x02951): (190, "ScriptContextTableMap"), ("read_only_space", 0x02951): (190, "ScriptContextTableMap"),
("read_only_space", 0x02979): (188, "ClosureFeedbackCellArrayMap"), ("read_only_space", 0x02979): (188, "ClosureFeedbackCellArrayMap"),
("read_only_space", 0x029a1): (242, "FeedbackMetadataArrayMap"), ("read_only_space", 0x029a1): (241, "FeedbackMetadataArrayMap"),
("read_only_space", 0x029c9): (176, "ArrayListMap"), ("read_only_space", 0x029c9): (176, "ArrayListMap"),
("read_only_space", 0x029f1): (129, "BigIntMap"), ("read_only_space", 0x029f1): (129, "BigIntMap"),
("read_only_space", 0x02a19): (189, "ObjectBoilerplateDescriptionMap"), ("read_only_space", 0x02a19): (189, "ObjectBoilerplateDescriptionMap"),
("read_only_space", 0x02a41): (192, "BytecodeArrayMap"), ("read_only_space", 0x02a41): (192, "BytecodeArrayMap"),
("read_only_space", 0x02a69): (239, "CodeDataContainerMap"), ("read_only_space", 0x02a69): (238, "CodeDataContainerMap"),
("read_only_space", 0x02a91): (240, "CoverageInfoMap"), ("read_only_space", 0x02a91): (239, "CoverageInfoMap"),
("read_only_space", 0x02ab9): (193, "FixedDoubleArrayMap"), ("read_only_space", 0x02ab9): (193, "FixedDoubleArrayMap"),
("read_only_space", 0x02ae1): (179, "GlobalDictionaryMap"), ("read_only_space", 0x02ae1): (179, "GlobalDictionaryMap"),
("read_only_space", 0x02b09): (157, "ManyClosuresCellMap"), ("read_only_space", 0x02b09): (157, "ManyClosuresCellMap"),
("read_only_space", 0x02b31): (249, "MegaDomHandlerMap"), ("read_only_space", 0x02b31): (248, "MegaDomHandlerMap"),
("read_only_space", 0x02b59): (176, "ModuleInfoMap"), ("read_only_space", 0x02b59): (176, "ModuleInfoMap"),
("read_only_space", 0x02b81): (180, "NameDictionaryMap"), ("read_only_space", 0x02b81): (180, "NameDictionaryMap"),
("read_only_space", 0x02ba9): (157, "NoClosuresCellMap"), ("read_only_space", 0x02ba9): (157, "NoClosuresCellMap"),
@ -337,30 +337,30 @@ KNOWN_MAPS = {
("read_only_space", 0x02c71): (181, "NameToIndexHashTableMap"), ("read_only_space", 0x02c71): (181, "NameToIndexHashTableMap"),
("read_only_space", 0x02c99): (186, "RegisteredSymbolTableMap"), ("read_only_space", 0x02c99): (186, "RegisteredSymbolTableMap"),
("read_only_space", 0x02cc1): (185, "OrderedNameDictionaryMap"), ("read_only_space", 0x02cc1): (185, "OrderedNameDictionaryMap"),
("read_only_space", 0x02ce9): (251, "PreparseDataMap"), ("read_only_space", 0x02ce9): (250, "PreparseDataMap"),
("read_only_space", 0x02d11): (252, "PropertyArrayMap"), ("read_only_space", 0x02d11): (251, "PropertyArrayMap"),
("read_only_space", 0x02d39): (235, "AccessorInfoMap"), ("read_only_space", 0x02d39): (234, "AccessorInfoMap"),
("read_only_space", 0x02d61): (236, "SideEffectCallHandlerInfoMap"), ("read_only_space", 0x02d61): (235, "SideEffectCallHandlerInfoMap"),
("read_only_space", 0x02d89): (236, "SideEffectFreeCallHandlerInfoMap"), ("read_only_space", 0x02d89): (235, "SideEffectFreeCallHandlerInfoMap"),
("read_only_space", 0x02db1): (236, "NextCallSideEffectFreeCallHandlerInfoMap"), ("read_only_space", 0x02db1): (235, "NextCallSideEffectFreeCallHandlerInfoMap"),
("read_only_space", 0x02dd9): (187, "SimpleNumberDictionaryMap"), ("read_only_space", 0x02dd9): (187, "SimpleNumberDictionaryMap"),
("read_only_space", 0x02e01): (224, "SmallOrderedHashMapMap"), ("read_only_space", 0x02e01): (223, "SmallOrderedHashMapMap"),
("read_only_space", 0x02e29): (225, "SmallOrderedHashSetMap"), ("read_only_space", 0x02e29): (224, "SmallOrderedHashSetMap"),
("read_only_space", 0x02e51): (226, "SmallOrderedNameDictionaryMap"), ("read_only_space", 0x02e51): (225, "SmallOrderedNameDictionaryMap"),
("read_only_space", 0x02e79): (231, "SourceTextModuleMap"), ("read_only_space", 0x02e79): (230, "SourceTextModuleMap"),
("read_only_space", 0x02ea1): (259, "SwissNameDictionaryMap"), ("read_only_space", 0x02ea1): (258, "SwissNameDictionaryMap"),
("read_only_space", 0x02ec9): (232, "SyntheticModuleMap"), ("read_only_space", 0x02ec9): (231, "SyntheticModuleMap"),
("read_only_space", 0x02ef1): (260, "WasmApiFunctionRefMap"), ("read_only_space", 0x02ef1): (259, "WasmApiFunctionRefMap"),
("read_only_space", 0x02f19): (221, "WasmCapiFunctionDataMap"), ("read_only_space", 0x02f19): (220, "WasmCapiFunctionDataMap"),
("read_only_space", 0x02f41): (222, "WasmExportedFunctionDataMap"), ("read_only_space", 0x02f41): (221, "WasmExportedFunctionDataMap"),
("read_only_space", 0x02f69): (262, "WasmInternalFunctionMap"), ("read_only_space", 0x02f69): (261, "WasmInternalFunctionMap"),
("read_only_space", 0x02f91): (223, "WasmJSFunctionDataMap"), ("read_only_space", 0x02f91): (222, "WasmJSFunctionDataMap"),
("read_only_space", 0x02fb9): (263, "WasmResumeDataMap"), ("read_only_space", 0x02fb9): (262, "WasmResumeDataMap"),
("read_only_space", 0x02fe1): (205, "WasmTypeInfoMap"), ("read_only_space", 0x02fe1): (264, "WasmTypeInfoMap"),
("read_only_space", 0x03009): (261, "WasmContinuationObjectMap"), ("read_only_space", 0x03009): (260, "WasmContinuationObjectMap"),
("read_only_space", 0x03031): (233, "WeakFixedArrayMap"), ("read_only_space", 0x03031): (232, "WeakFixedArrayMap"),
("read_only_space", 0x03059): (178, "EphemeronHashTableMap"), ("read_only_space", 0x03059): (178, "EphemeronHashTableMap"),
("read_only_space", 0x03081): (241, "EmbedderDataArrayMap"), ("read_only_space", 0x03081): (240, "EmbedderDataArrayMap"),
("read_only_space", 0x030a9): (266, "WeakCellMap"), ("read_only_space", 0x030a9): (266, "WeakCellMap"),
("read_only_space", 0x030d1): (32, "StringMap"), ("read_only_space", 0x030d1): (32, "StringMap"),
("read_only_space", 0x030f9): (41, "ConsOneByteStringMap"), ("read_only_space", 0x030f9): (41, "ConsOneByteStringMap"),
@ -423,29 +423,29 @@ KNOWN_MAPS = {
("read_only_space", 0x078d1): (174, "WasmExceptionTagMap"), ("read_only_space", 0x078d1): (174, "WasmExceptionTagMap"),
("read_only_space", 0x078f9): (175, "WasmIndirectFunctionTableMap"), ("read_only_space", 0x078f9): (175, "WasmIndirectFunctionTableMap"),
("read_only_space", 0x07921): (195, "SloppyArgumentsElementsMap"), ("read_only_space", 0x07921): (195, "SloppyArgumentsElementsMap"),
("read_only_space", 0x07949): (229, "DescriptorArrayMap"), ("read_only_space", 0x07949): (228, "DescriptorArrayMap"),
("read_only_space", 0x07971): (218, "UncompiledDataWithoutPreparseDataMap"), ("read_only_space", 0x07971): (217, "UncompiledDataWithoutPreparseDataMap"),
("read_only_space", 0x07999): (216, "UncompiledDataWithPreparseDataMap"), ("read_only_space", 0x07999): (215, "UncompiledDataWithPreparseDataMap"),
("read_only_space", 0x079c1): (219, "UncompiledDataWithoutPreparseDataWithJobMap"), ("read_only_space", 0x079c1): (218, "UncompiledDataWithoutPreparseDataWithJobMap"),
("read_only_space", 0x079e9): (217, "UncompiledDataWithPreparseDataAndJobMap"), ("read_only_space", 0x079e9): (216, "UncompiledDataWithPreparseDataAndJobMap"),
("read_only_space", 0x07a11): (250, "OnHeapBasicBlockProfilerDataMap"), ("read_only_space", 0x07a11): (249, "OnHeapBasicBlockProfilerDataMap"),
("read_only_space", 0x07a39): (196, "TurbofanBitsetTypeMap"), ("read_only_space", 0x07a39): (196, "TurbofanBitsetTypeMap"),
("read_only_space", 0x07a61): (200, "TurbofanUnionTypeMap"), ("read_only_space", 0x07a61): (200, "TurbofanUnionTypeMap"),
("read_only_space", 0x07a89): (199, "TurbofanRangeTypeMap"), ("read_only_space", 0x07a89): (199, "TurbofanRangeTypeMap"),
("read_only_space", 0x07ab1): (197, "TurbofanHeapConstantTypeMap"), ("read_only_space", 0x07ab1): (197, "TurbofanHeapConstantTypeMap"),
("read_only_space", 0x07ad9): (198, "TurbofanOtherNumberConstantTypeMap"), ("read_only_space", 0x07ad9): (198, "TurbofanOtherNumberConstantTypeMap"),
("read_only_space", 0x07b01): (246, "InternalClassMap"), ("read_only_space", 0x07b01): (245, "InternalClassMap"),
("read_only_space", 0x07b29): (257, "SmiPairMap"), ("read_only_space", 0x07b29): (256, "SmiPairMap"),
("read_only_space", 0x07b51): (256, "SmiBoxMap"), ("read_only_space", 0x07b51): (255, "SmiBoxMap"),
("read_only_space", 0x07b79): (201, "ExportedSubClassBaseMap"), ("read_only_space", 0x07b79): (201, "ExportedSubClassBaseMap"),
("read_only_space", 0x07ba1): (202, "ExportedSubClassMap"), ("read_only_space", 0x07ba1): (202, "ExportedSubClassMap"),
("read_only_space", 0x07bc9): (227, "AbstractInternalClassSubclass1Map"), ("read_only_space", 0x07bc9): (226, "AbstractInternalClassSubclass1Map"),
("read_only_space", 0x07bf1): (228, "AbstractInternalClassSubclass2Map"), ("read_only_space", 0x07bf1): (227, "AbstractInternalClassSubclass2Map"),
("read_only_space", 0x07c19): (194, "InternalClassWithSmiElementsMap"), ("read_only_space", 0x07c19): (194, "InternalClassWithSmiElementsMap"),
("read_only_space", 0x07c41): (247, "InternalClassWithStructElementsMap"), ("read_only_space", 0x07c41): (246, "InternalClassWithStructElementsMap"),
("read_only_space", 0x07c69): (203, "ExportedSubClass2Map"), ("read_only_space", 0x07c69): (203, "ExportedSubClass2Map"),
("read_only_space", 0x07c91): (258, "SortStateMap"), ("read_only_space", 0x07c91): (257, "SortStateMap"),
("read_only_space", 0x07cb9): (264, "WasmStringViewIterMap"), ("read_only_space", 0x07cb9): (263, "WasmStringViewIterMap"),
("read_only_space", 0x07ce1): (145, "AllocationSiteWithWeakNextMap"), ("read_only_space", 0x07ce1): (145, "AllocationSiteWithWeakNextMap"),
("read_only_space", 0x07d09): (145, "AllocationSiteWithoutWeakNextMap"), ("read_only_space", 0x07d09): (145, "AllocationSiteWithoutWeakNextMap"),
("read_only_space", 0x07dd5): (137, "LoadHandler1Map"), ("read_only_space", 0x07dd5): (137, "LoadHandler1Map"),