From 172e1bee707cf09b019d22e3d4ffa08582a03c44 Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Thu, 8 Jul 2021 20:28:44 +0000 Subject: [PATCH] [vm] Introduce LinkedHashBase In separate CL so that the LinkedHashMap CL is a bit smaller. Bug: https://github.com/dart-lang/sdk/issues/36077 TEST=tests/**_test.dart Change-Id: I4ecff40a40fffbad4d9c37ca426066128c0ed7f7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/206223 Reviewed-by: Tess Strickland Commit-Queue: Daco Harkes --- runtime/vm/class_finalizer.cc | 2 +- runtime/vm/compiler/backend/il.cc | 17 +- runtime/vm/compiler/backend/range_analysis.cc | 10 +- runtime/vm/compiler/backend/slot.cc | 10 +- runtime/vm/compiler/backend/slot.h | 12 +- runtime/vm/compiler/frontend/kernel_to_il.cc | 62 ++-- runtime/vm/compiler/recognized_methods_list.h | 20 +- runtime/vm/compiler/runtime_api.h | 6 +- .../vm/compiler/runtime_offsets_extracted.h | 308 +++++++++--------- runtime/vm/compiler/runtime_offsets_list.h | 14 +- runtime/vm/object.h | 72 ++-- runtime/vm/raw_object.h | 12 +- runtime/vm/raw_object_fields.cc | 12 +- runtime/vm/tagged_pointer.h | 3 +- sdk/lib/_internal/vm/lib/compact_hash.dart | 20 +- 15 files changed, 301 insertions(+), 279 deletions(-) diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc index 88ccfad5043..d296cc7cb76 100644 --- a/runtime/vm/class_finalizer.cc +++ b/runtime/vm/class_finalizer.cc @@ -1453,7 +1453,7 @@ void ClassFinalizer::SortClasses() { } ASSERT(next_new_cid == num_cids); RemapClassIds(old_to_new_cid.get()); - RehashTypes(); // Types use cid's as part of their hashes. + RehashTypes(); // Types use cid's as part of their hashes. IG->RehashConstants(); // Const objects use cid's as part of their hashes. // Ensure any newly spawned isolate will apply this permutation map right diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc index ddb8cf9b250..45a70dc7646 100644 --- a/runtime/vm/compiler/backend/il.cc +++ b/runtime/vm/compiler/backend/il.cc @@ -2896,7 +2896,7 @@ Definition* LoadFieldInstr::Canonicalize(FlowGraph* flow_graph) { } switch (call->function().recognized_kind()) { case MethodRecognizer::kByteDataFactory: - case MethodRecognizer::kLinkedHashMap_getData: + case MethodRecognizer::kLinkedHashBase_getData: return flow_graph->constant_null(); default: break; @@ -2917,7 +2917,7 @@ Definition* LoadFieldInstr::Canonicalize(FlowGraph* flow_graph) { break; } - case Slot::Kind::kLinkedHashMap_data: + case Slot::Kind::kLinkedHashBase_data: return flow_graph->constant_null(); default: @@ -6502,14 +6502,11 @@ void FfiCallInstr::EmitParamMoves(FlowGraphCompiler* compiler, // Find the native location where this individual definition should be // moved to. const auto& def_target = - arg_target.payload_type().IsPrimitive() - ? arg_target - : arg_target.IsMultiple() - ? *arg_target.AsMultiple().locations()[i] - : arg_target.IsPointerToMemory() - ? arg_target.AsPointerToMemory().pointer_location() - : /*arg_target.IsStack()*/ arg_target.Split( - zone_, num_defs, i); + arg_target.payload_type().IsPrimitive() ? arg_target + : arg_target.IsMultiple() ? *arg_target.AsMultiple().locations()[i] + : arg_target.IsPointerToMemory() + ? arg_target.AsPointerToMemory().pointer_location() + : /*arg_target.IsStack()*/ arg_target.Split(zone_, num_defs, i); ConstantTemporaryAllocator temp_alloc(temp); if (origin.IsConstant()) { diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc index 76ab69aae5e..5eec5a4ff0f 100644 --- a/runtime/vm/compiler/backend/range_analysis.cc +++ b/runtime/vm/compiler/backend/range_analysis.cc @@ -2788,8 +2788,8 @@ void LoadFieldInstr::InferRange(RangeAnalysis* analysis, Range* range) { Definition::InferRange(analysis, range); break; - case Slot::Kind::kLinkedHashMap_index: - case Slot::Kind::kLinkedHashMap_data: + case Slot::Kind::kLinkedHashBase_index: + case Slot::Kind::kLinkedHashBase_data: case Slot::Kind::kGrowableObjectArray_data: case Slot::Kind::kContext_parent: case Slot::Kind::kTypeArguments: @@ -2834,9 +2834,9 @@ void LoadFieldInstr::InferRange(RangeAnalysis* analysis, Range* range) { break; case Slot::Kind::kClosure_hash: - case Slot::Kind::kLinkedHashMap_hash_mask: - case Slot::Kind::kLinkedHashMap_used_data: - case Slot::Kind::kLinkedHashMap_deleted_keys: + case Slot::Kind::kLinkedHashBase_hash_mask: + case Slot::Kind::kLinkedHashBase_used_data: + case Slot::Kind::kLinkedHashBase_deleted_keys: *range = Range(RangeBoundary::FromConstant(0), RangeBoundary::MaxSmi()); break; diff --git a/runtime/vm/compiler/backend/slot.cc b/runtime/vm/compiler/backend/slot.cc index f1821ce2d9a..cd8e80c0e05 100644 --- a/runtime/vm/compiler/backend/slot.cc +++ b/runtime/vm/compiler/backend/slot.cc @@ -200,11 +200,11 @@ bool Slot::IsImmutableLengthSlot() const { case Slot::Kind::k##Class##_##Field: UNBOXED_NATIVE_SLOTS_LIST(UNBOXED_NATIVE_SLOT_CASE) #undef UNBOXED_NATIVE_SLOT_CASE - case Slot::Kind::kLinkedHashMap_index: - case Slot::Kind::kLinkedHashMap_data: - case Slot::Kind::kLinkedHashMap_hash_mask: - case Slot::Kind::kLinkedHashMap_used_data: - case Slot::Kind::kLinkedHashMap_deleted_keys: + case Slot::Kind::kLinkedHashBase_index: + case Slot::Kind::kLinkedHashBase_data: + case Slot::Kind::kLinkedHashBase_hash_mask: + case Slot::Kind::kLinkedHashBase_used_data: + case Slot::Kind::kLinkedHashBase_deleted_keys: case Slot::Kind::kArgumentsDescriptor_type_args_len: case Slot::Kind::kArgumentsDescriptor_positional_count: case Slot::Kind::kArgumentsDescriptor_count: diff --git a/runtime/vm/compiler/backend/slot.h b/runtime/vm/compiler/backend/slot.h index 2198ba77932..866e3996fa8 100644 --- a/runtime/vm/compiler/backend/slot.h +++ b/runtime/vm/compiler/backend/slot.h @@ -95,11 +95,11 @@ class ParsedFunction; V(TypedDataView, UntaggedTypedDataView, offset_in_bytes, Smi, FINAL) \ V(TypedDataView, UntaggedTypedDataView, data, Dynamic, FINAL) \ V(String, UntaggedString, length, Smi, FINAL) \ - V(LinkedHashMap, UntaggedLinkedHashMap, index, TypedDataUint32Array, VAR) \ - V(LinkedHashMap, UntaggedLinkedHashMap, data, Array, VAR) \ - V(LinkedHashMap, UntaggedLinkedHashMap, hash_mask, Smi, VAR) \ - V(LinkedHashMap, UntaggedLinkedHashMap, used_data, Smi, VAR) \ - V(LinkedHashMap, UntaggedLinkedHashMap, deleted_keys, Smi, VAR) \ + V(LinkedHashBase, UntaggedLinkedHashBase, index, TypedDataUint32Array, VAR) \ + V(LinkedHashBase, UntaggedLinkedHashBase, data, Array, VAR) \ + V(LinkedHashBase, UntaggedLinkedHashBase, hash_mask, Smi, VAR) \ + V(LinkedHashBase, UntaggedLinkedHashBase, used_data, Smi, VAR) \ + V(LinkedHashBase, UntaggedLinkedHashBase, deleted_keys, Smi, VAR) \ V(ArgumentsDescriptor, UntaggedArray, type_args_len, Smi, FINAL) \ V(ArgumentsDescriptor, UntaggedArray, positional_count, Smi, FINAL) \ V(ArgumentsDescriptor, UntaggedArray, count, Smi, FINAL) \ @@ -338,7 +338,7 @@ class Slot : public ZoneAllocated { static const Slot& GetNativeSlot(Kind kind); const Kind kind_; - const int8_t flags_; // is_immutable, is_nullable + const int8_t flags_; // is_immutable, is_nullable const ClassIdTagType cid_; // Concrete cid of a value or kDynamicCid. const intptr_t offset_in_bytes_; diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc index dc96c4e597f..6968ff1ba51 100644 --- a/runtime/vm/compiler/frontend/kernel_to_il.cc +++ b/runtime/vm/compiler/frontend/kernel_to_il.cc @@ -871,16 +871,16 @@ bool FlowGraphBuilder::IsRecognizedMethodForFlowGraph( case MethodRecognizer::kListFactory: case MethodRecognizer::kObjectArrayAllocate: case MethodRecognizer::kCopyRangeFromUint8ListToOneByteString: - case MethodRecognizer::kLinkedHashMap_getIndex: - case MethodRecognizer::kLinkedHashMap_setIndex: - case MethodRecognizer::kLinkedHashMap_getData: - case MethodRecognizer::kLinkedHashMap_setData: - case MethodRecognizer::kLinkedHashMap_getHashMask: - case MethodRecognizer::kLinkedHashMap_setHashMask: - case MethodRecognizer::kLinkedHashMap_getUsedData: - case MethodRecognizer::kLinkedHashMap_setUsedData: - case MethodRecognizer::kLinkedHashMap_getDeletedKeys: - case MethodRecognizer::kLinkedHashMap_setDeletedKeys: + case MethodRecognizer::kLinkedHashBase_getIndex: + case MethodRecognizer::kLinkedHashBase_setIndex: + case MethodRecognizer::kLinkedHashBase_getData: + case MethodRecognizer::kLinkedHashBase_setData: + case MethodRecognizer::kLinkedHashBase_getHashMask: + case MethodRecognizer::kLinkedHashBase_setHashMask: + case MethodRecognizer::kLinkedHashBase_getUsedData: + case MethodRecognizer::kLinkedHashBase_setUsedData: + case MethodRecognizer::kLinkedHashBase_getDeletedKeys: + case MethodRecognizer::kLinkedHashBase_setDeletedKeys: case MethodRecognizer::kWeakProperty_getKey: case MethodRecognizer::kWeakProperty_setKey: case MethodRecognizer::kWeakProperty_getValue: @@ -1165,68 +1165,68 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfRecognizedMethod( body += MemoryCopy(kTypedDataUint8ArrayCid, kOneByteStringCid); body += NullConstant(); break; - case MethodRecognizer::kLinkedHashMap_getIndex: + case MethodRecognizer::kLinkedHashBase_getIndex: ASSERT(function.NumParameters() == 1); body += LoadLocal(parsed_function_->RawParameterVariable(0)); - body += LoadNativeField(Slot::LinkedHashMap_index()); + body += LoadNativeField(Slot::LinkedHashBase_index()); break; - case MethodRecognizer::kLinkedHashMap_setIndex: + case MethodRecognizer::kLinkedHashBase_setIndex: ASSERT(function.NumParameters() == 2); body += LoadLocal(parsed_function_->RawParameterVariable(0)); body += LoadLocal(parsed_function_->RawParameterVariable(1)); - body += StoreNativeField(Slot::LinkedHashMap_index()); + body += StoreNativeField(Slot::LinkedHashBase_index()); body += NullConstant(); break; - case MethodRecognizer::kLinkedHashMap_getData: + case MethodRecognizer::kLinkedHashBase_getData: ASSERT(function.NumParameters() == 1); body += LoadLocal(parsed_function_->RawParameterVariable(0)); - body += LoadNativeField(Slot::LinkedHashMap_data()); + body += LoadNativeField(Slot::LinkedHashBase_data()); break; - case MethodRecognizer::kLinkedHashMap_setData: + case MethodRecognizer::kLinkedHashBase_setData: ASSERT(function.NumParameters() == 2); body += LoadLocal(parsed_function_->RawParameterVariable(0)); body += LoadLocal(parsed_function_->RawParameterVariable(1)); - body += StoreNativeField(Slot::LinkedHashMap_data()); + body += StoreNativeField(Slot::LinkedHashBase_data()); body += NullConstant(); break; - case MethodRecognizer::kLinkedHashMap_getHashMask: + case MethodRecognizer::kLinkedHashBase_getHashMask: ASSERT(function.NumParameters() == 1); body += LoadLocal(parsed_function_->RawParameterVariable(0)); - body += LoadNativeField(Slot::LinkedHashMap_hash_mask()); + body += LoadNativeField(Slot::LinkedHashBase_hash_mask()); break; - case MethodRecognizer::kLinkedHashMap_setHashMask: + case MethodRecognizer::kLinkedHashBase_setHashMask: ASSERT(function.NumParameters() == 2); body += LoadLocal(parsed_function_->RawParameterVariable(0)); body += LoadLocal(parsed_function_->RawParameterVariable(1)); - body += StoreNativeField(Slot::LinkedHashMap_hash_mask(), + body += StoreNativeField(Slot::LinkedHashBase_hash_mask(), StoreInstanceFieldInstr::Kind::kOther, kNoStoreBarrier); body += NullConstant(); break; - case MethodRecognizer::kLinkedHashMap_getUsedData: + case MethodRecognizer::kLinkedHashBase_getUsedData: ASSERT(function.NumParameters() == 1); body += LoadLocal(parsed_function_->RawParameterVariable(0)); - body += LoadNativeField(Slot::LinkedHashMap_used_data()); + body += LoadNativeField(Slot::LinkedHashBase_used_data()); break; - case MethodRecognizer::kLinkedHashMap_setUsedData: + case MethodRecognizer::kLinkedHashBase_setUsedData: ASSERT(function.NumParameters() == 2); body += LoadLocal(parsed_function_->RawParameterVariable(0)); body += LoadLocal(parsed_function_->RawParameterVariable(1)); - body += StoreNativeField(Slot::LinkedHashMap_used_data(), + body += StoreNativeField(Slot::LinkedHashBase_used_data(), StoreInstanceFieldInstr::Kind::kOther, kNoStoreBarrier); body += NullConstant(); break; - case MethodRecognizer::kLinkedHashMap_getDeletedKeys: + case MethodRecognizer::kLinkedHashBase_getDeletedKeys: ASSERT(function.NumParameters() == 1); body += LoadLocal(parsed_function_->RawParameterVariable(0)); - body += LoadNativeField(Slot::LinkedHashMap_deleted_keys()); + body += LoadNativeField(Slot::LinkedHashBase_deleted_keys()); break; - case MethodRecognizer::kLinkedHashMap_setDeletedKeys: + case MethodRecognizer::kLinkedHashBase_setDeletedKeys: ASSERT(function.NumParameters() == 2); body += LoadLocal(parsed_function_->RawParameterVariable(0)); body += LoadLocal(parsed_function_->RawParameterVariable(1)); - body += StoreNativeField(Slot::LinkedHashMap_deleted_keys(), + body += StoreNativeField(Slot::LinkedHashBase_deleted_keys(), StoreInstanceFieldInstr::Kind::kOther, kNoStoreBarrier); body += NullConstant(); @@ -2607,7 +2607,7 @@ Fragment FlowGraphBuilder::BuildClosureCallTypeArgumentsTypeCheck( TargetEntryInstr* is_covariant; loop_test_flag += BranchIfEqual(&is_noncovariant, &is_covariant); - Fragment(is_covariant) + Goto(next); // Continue if covariant. + Fragment(is_covariant) + Goto(next); // Continue if covariant. Fragment(is_noncovariant) + Goto(check); // Check type if non-covariant. Fragment loop_prep_type_param(check); diff --git a/runtime/vm/compiler/recognized_methods_list.h b/runtime/vm/compiler/recognized_methods_list.h index 38109869dba..f45e224f665 100644 --- a/runtime/vm/compiler/recognized_methods_list.h +++ b/runtime/vm/compiler/recognized_methods_list.h @@ -148,16 +148,16 @@ namespace dart { V(_Int32x4, _withFlagY, Int32x4WithFlagY, 0xa8cf9ba6) \ V(_Int32x4, _withFlagZ, Int32x4WithFlagZ, 0xa8058854) \ V(_Int32x4, _withFlagW, Int32x4WithFlagW, 0xb333f958) \ - V(_HashVMBase, get:_index, LinkedHashMap_getIndex, 0x882671dc) \ - V(_HashVMBase, set:_index, LinkedHashMap_setIndex, 0xa2be9418) \ - V(_HashVMBase, get:_data, LinkedHashMap_getData, 0x780e14ad) \ - V(_HashVMBase, set:_data, LinkedHashMap_setData, 0xb6a5c369) \ - V(_HashVMBase, get:_usedData, LinkedHashMap_getUsedData, 0x470893ed) \ - V(_HashVMBase, set:_usedData, LinkedHashMap_setUsedData, 0xb3c887a9) \ - V(_HashVMBase, get:_hashMask, LinkedHashMap_getHashMask, 0x4f0ec79c) \ - V(_HashVMBase, set:_hashMask, LinkedHashMap_setHashMask, 0xbbcebb58) \ - V(_HashVMBase, get:_deletedKeys, LinkedHashMap_getDeletedKeys, 0x510dc4a0) \ - V(_HashVMBase, set:_deletedKeys, LinkedHashMap_setDeletedKeys, 0xbdcdb85c) \ + V(_HashVMBase, get:_index, LinkedHashBase_getIndex, 0x882671dc) \ + V(_HashVMBase, set:_index, LinkedHashBase_setIndex, 0xa2be9418) \ + V(_HashVMBase, get:_data, LinkedHashBase_getData, 0x780e14ad) \ + V(_HashVMBase, set:_data, LinkedHashBase_setData, 0xb6a5c369) \ + V(_HashVMBase, get:_usedData, LinkedHashBase_getUsedData, 0x470893ed) \ + V(_HashVMBase, set:_usedData, LinkedHashBase_setUsedData, 0xb3c887a9) \ + V(_HashVMBase, get:_hashMask, LinkedHashBase_getHashMask, 0x4f0ec79c) \ + V(_HashVMBase, set:_hashMask, LinkedHashBase_setHashMask, 0xbbcebb58) \ + V(_HashVMBase, get:_deletedKeys, LinkedHashBase_getDeletedKeys, 0x510dc4a0) \ + V(_HashVMBase, set:_deletedKeys, LinkedHashBase_setDeletedKeys, 0xbdcdb85c) \ V(_WeakProperty, get:key, WeakProperty_getKey, 0xde00e462) \ V(_WeakProperty, set:key, WeakProperty_setKey, 0x963a095f) \ V(_WeakProperty, get:value, WeakProperty_getValue, 0xd2f28aae) \ diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h index 9af2bbfee8c..fb22d3bcb1b 100644 --- a/runtime/vm/compiler/runtime_api.h +++ b/runtime/vm/compiler/runtime_api.h @@ -634,7 +634,7 @@ class TypedDataView : public AllStatic { static word NextFieldOffset(); }; -class LinkedHashMap : public AllStatic { +class LinkedHashBase : public AllStatic { public: static word index_offset(); static word data_offset(); @@ -643,6 +643,10 @@ class LinkedHashMap : public AllStatic { static word deleted_keys_offset(); static word type_arguments_offset(); static word InstanceSize(); +}; + +class LinkedHashMap : public LinkedHashBase { + public: static word NextFieldOffset(); }; diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h index ccb19251ea8..b57c17d9d11 100644 --- a/runtime/vm/compiler/runtime_offsets_extracted.h +++ b/runtime/vm/compiler/runtime_offsets_extracted.h @@ -195,15 +195,15 @@ static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 16; static constexpr dart::compiler::target::word Isolate_single_step_offset = 36; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 24; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 24; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 12; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 8; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 4; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 4; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 20; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -513,7 +513,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 28; static constexpr dart::compiler::target::word Library_InstanceSize = 88; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 20; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 28; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 24; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -737,15 +737,15 @@ static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word Isolate_single_step_offset = 72; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 32; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 48; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 48; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 24; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 16; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 8; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 40; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -1061,7 +1061,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 48; static constexpr dart::compiler::target::word Library_InstanceSize = 168; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 40; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 56; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 48; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -1284,15 +1284,15 @@ static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 16; static constexpr dart::compiler::target::word Isolate_single_step_offset = 36; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 24; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 24; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 12; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 8; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 4; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 4; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 20; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -1599,7 +1599,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 28; static constexpr dart::compiler::target::word Library_InstanceSize = 88; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 20; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 28; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 24; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -1823,15 +1823,15 @@ static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word Isolate_single_step_offset = 72; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 32; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 48; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 48; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 24; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 16; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 8; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 40; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -2148,7 +2148,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 48; static constexpr dart::compiler::target::word Library_InstanceSize = 168; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 40; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 56; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 48; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -2371,15 +2371,15 @@ static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word Isolate_single_step_offset = 72; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 20; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 20; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 28; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 28; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 16; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 12; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 12; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 8; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 24; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -2695,7 +2695,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 32; static constexpr dart::compiler::target::word Library_InstanceSize = 112; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 24; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 32; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 32; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 48; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -2918,15 +2918,15 @@ static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word Isolate_single_step_offset = 72; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 20; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 20; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 28; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 28; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 16; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 12; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 12; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 8; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 24; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -3243,7 +3243,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 32; static constexpr dart::compiler::target::word Library_InstanceSize = 112; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 24; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 32; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 32; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 48; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -3462,15 +3462,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 16; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 24; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 24; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 12; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 8; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 4; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 4; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 20; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -3780,7 +3780,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 28; static constexpr dart::compiler::target::word Library_InstanceSize = 88; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 20; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 28; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 24; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -3998,15 +3998,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 32; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 48; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 48; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 24; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 16; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 8; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 40; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -4322,7 +4322,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 48; static constexpr dart::compiler::target::word Library_InstanceSize = 168; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 40; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 56; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 48; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -4539,15 +4539,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 16; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 16; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 16; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 16; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 24; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 24; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 12; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 8; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 4; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 4; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 20; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -4854,7 +4854,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 28; static constexpr dart::compiler::target::word Library_InstanceSize = 88; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 20; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 28; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 28; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 24; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -5072,15 +5072,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 32; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 32; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 48; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 48; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 24; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 16; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 16; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 8; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 40; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -5397,7 +5397,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 48; static constexpr dart::compiler::target::word Library_InstanceSize = 168; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 40; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 56; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 56; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 48; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -5614,15 +5614,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 20; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 20; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 28; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 28; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 16; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 12; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 12; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 8; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 24; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -5938,7 +5938,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 32; static constexpr dart::compiler::target::word Library_InstanceSize = 112; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 24; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 32; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 32; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 48; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -6155,15 +6155,15 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word LinkedHashMap_data_offset = 20; +static constexpr dart::compiler::target::word LinkedHashBase_data_offset = 20; static constexpr dart::compiler::target::word - LinkedHashMap_deleted_keys_offset = 28; -static constexpr dart::compiler::target::word LinkedHashMap_hash_mask_offset = + LinkedHashBase_deleted_keys_offset = 28; +static constexpr dart::compiler::target::word LinkedHashBase_hash_mask_offset = 16; -static constexpr dart::compiler::target::word LinkedHashMap_index_offset = 12; +static constexpr dart::compiler::target::word LinkedHashBase_index_offset = 12; static constexpr dart::compiler::target::word - LinkedHashMap_type_arguments_offset = 8; -static constexpr dart::compiler::target::word LinkedHashMap_used_data_offset = + LinkedHashBase_type_arguments_offset = 8; +static constexpr dart::compiler::target::word LinkedHashBase_used_data_offset = 24; static constexpr dart::compiler::target::word LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word @@ -6480,7 +6480,7 @@ static constexpr dart::compiler::target::word KernelProgramInfo_InstanceSize = static constexpr dart::compiler::target::word LanguageError_InstanceSize = 32; static constexpr dart::compiler::target::word Library_InstanceSize = 112; static constexpr dart::compiler::target::word LibraryPrefix_InstanceSize = 24; -static constexpr dart::compiler::target::word LinkedHashMap_InstanceSize = 32; +static constexpr dart::compiler::target::word LinkedHashBase_InstanceSize = 32; static constexpr dart::compiler::target::word MegamorphicCache_InstanceSize = 48; static constexpr dart::compiler::target::word Mint_InstanceSize = 16; @@ -6722,18 +6722,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset = 36; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 16; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 16; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 24; + AOT_LinkedHashBase_deleted_keys_offset = 24; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 12; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 12; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 4; + AOT_LinkedHashBase_type_arguments_offset = 4; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 20; + AOT_LinkedHashBase_used_data_offset = 20; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 8; @@ -7081,7 +7081,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 84; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 20; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 28; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 24; @@ -7329,18 +7329,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset = 72; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 32; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 48; + AOT_LinkedHashBase_deleted_keys_offset = 48; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 24; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 24; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 16; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 8; + AOT_LinkedHashBase_type_arguments_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 40; + AOT_LinkedHashBase_used_data_offset = 40; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 16; @@ -7691,7 +7691,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 160; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 40; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 56; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 48; @@ -7942,18 +7942,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset = 72; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 32; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 48; + AOT_LinkedHashBase_deleted_keys_offset = 48; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 24; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 24; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 16; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 8; + AOT_LinkedHashBase_type_arguments_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 40; + AOT_LinkedHashBase_used_data_offset = 40; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 16; @@ -8305,7 +8305,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 160; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 40; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 56; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 48; @@ -8552,18 +8552,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset = 72; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 20; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 28; + AOT_LinkedHashBase_deleted_keys_offset = 28; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 16; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 16; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 12; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 8; + AOT_LinkedHashBase_type_arguments_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 24; + AOT_LinkedHashBase_used_data_offset = 24; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 16; @@ -8914,7 +8914,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 104; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 24; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 32; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 48; @@ -9161,18 +9161,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_Isolate_single_step_offset = 72; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 20; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 28; + AOT_LinkedHashBase_deleted_keys_offset = 28; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 16; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 16; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 12; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 8; + AOT_LinkedHashBase_type_arguments_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 24; + AOT_LinkedHashBase_used_data_offset = 24; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 16; @@ -9524,7 +9524,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 104; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 24; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 32; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 48; @@ -9766,18 +9766,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_IsolateGroup_cached_class_table_table_offset = 16; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 16; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 16; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 24; + AOT_LinkedHashBase_deleted_keys_offset = 24; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 12; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 12; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 4; + AOT_LinkedHashBase_type_arguments_offset = 4; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 20; + AOT_LinkedHashBase_used_data_offset = 20; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 8; @@ -10125,7 +10125,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 84; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 20; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 28; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 24; @@ -10366,18 +10366,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 32; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 48; + AOT_LinkedHashBase_deleted_keys_offset = 48; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 24; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 24; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 16; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 8; + AOT_LinkedHashBase_type_arguments_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 40; + AOT_LinkedHashBase_used_data_offset = 40; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 16; @@ -10728,7 +10728,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 160; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 40; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 56; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 48; @@ -10972,18 +10972,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 32; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 48; + AOT_LinkedHashBase_deleted_keys_offset = 48; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 24; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 24; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 16; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 8; + AOT_LinkedHashBase_type_arguments_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 40; + AOT_LinkedHashBase_used_data_offset = 40; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 16; @@ -11335,7 +11335,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 160; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 40; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 56; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 48; @@ -11575,18 +11575,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 20; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 28; + AOT_LinkedHashBase_deleted_keys_offset = 28; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 16; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 16; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 12; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 8; + AOT_LinkedHashBase_type_arguments_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 24; + AOT_LinkedHashBase_used_data_offset = 24; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 16; @@ -11937,7 +11937,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 104; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 24; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 32; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 48; @@ -12177,18 +12177,18 @@ static constexpr dart::compiler::target::word static constexpr dart::compiler::target::word AOT_IsolateGroup_cached_class_table_table_offset = 32; static constexpr dart::compiler::target::word AOT_Isolate_user_tag_offset = 32; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_data_offset = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_data_offset = 20; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_deleted_keys_offset = 28; + AOT_LinkedHashBase_deleted_keys_offset = 28; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_hash_mask_offset = 16; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_index_offset = + AOT_LinkedHashBase_hash_mask_offset = 16; +static constexpr dart::compiler::target::word AOT_LinkedHashBase_index_offset = 12; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_type_arguments_offset = 8; + AOT_LinkedHashBase_type_arguments_offset = 8; static constexpr dart::compiler::target::word - AOT_LinkedHashMap_used_data_offset = 24; + AOT_LinkedHashBase_used_data_offset = 24; static constexpr dart::compiler::target::word AOT_LocalHandle_ptr_offset = 0; static constexpr dart::compiler::target::word AOT_MarkingStackBlock_pointers_offset = 16; @@ -12540,7 +12540,7 @@ static constexpr dart::compiler::target::word AOT_LanguageError_InstanceSize = static constexpr dart::compiler::target::word AOT_Library_InstanceSize = 104; static constexpr dart::compiler::target::word AOT_LibraryPrefix_InstanceSize = 24; -static constexpr dart::compiler::target::word AOT_LinkedHashMap_InstanceSize = +static constexpr dart::compiler::target::word AOT_LinkedHashBase_InstanceSize = 32; static constexpr dart::compiler::target::word AOT_MegamorphicCache_InstanceSize = 48; diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h index d943ed3c01f..940f48de0f3 100644 --- a/runtime/vm/compiler/runtime_offsets_list.h +++ b/runtime/vm/compiler/runtime_offsets_list.h @@ -156,12 +156,12 @@ FIELD(IsolateGroup, cached_class_table_table_offset) \ NOT_IN_PRODUCT(FIELD(Isolate, single_step_offset)) \ FIELD(Isolate, user_tag_offset) \ - FIELD(LinkedHashMap, data_offset) \ - FIELD(LinkedHashMap, deleted_keys_offset) \ - FIELD(LinkedHashMap, hash_mask_offset) \ - FIELD(LinkedHashMap, index_offset) \ - FIELD(LinkedHashMap, type_arguments_offset) \ - FIELD(LinkedHashMap, used_data_offset) \ + FIELD(LinkedHashBase, data_offset) \ + FIELD(LinkedHashBase, deleted_keys_offset) \ + FIELD(LinkedHashBase, hash_mask_offset) \ + FIELD(LinkedHashBase, index_offset) \ + FIELD(LinkedHashBase, type_arguments_offset) \ + FIELD(LinkedHashBase, used_data_offset) \ FIELD(LocalHandle, ptr_offset) \ FIELD(MarkingStackBlock, pointers_offset) \ FIELD(MarkingStackBlock, top_offset) \ @@ -364,7 +364,7 @@ SIZEOF(LanguageError, InstanceSize, UntaggedLanguageError) \ SIZEOF(Library, InstanceSize, UntaggedLibrary) \ SIZEOF(LibraryPrefix, InstanceSize, UntaggedLibraryPrefix) \ - SIZEOF(LinkedHashMap, InstanceSize, UntaggedLinkedHashMap) \ + SIZEOF(LinkedHashBase, InstanceSize, UntaggedLinkedHashBase) \ SIZEOF(MegamorphicCache, InstanceSize, UntaggedMegamorphicCache) \ SIZEOF(Mint, InstanceSize, UntaggedMint) \ SIZEOF(MirrorReference, InstanceSize, UntaggedMirrorReference) \ diff --git a/runtime/vm/object.h b/runtime/vm/object.h index d86046780fa..7cc8063d3b5 100644 --- a/runtime/vm/object.h +++ b/runtime/vm/object.h @@ -3712,8 +3712,7 @@ class Function : public Object { V(IsExtensionMember, is_extension_member) // Bit that is updated after function is constructed, has to be updated in // concurrent-safe manner. -#define FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(V) \ - V(Inlinable, is_inlinable) +#define FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(V) V(Inlinable, is_inlinable) #define DEFINE_ACCESSORS(name, accessor_name) \ void set_##accessor_name(bool value) const { \ @@ -3753,9 +3752,9 @@ class Function : public Object { // Single bit sized fields start here. #define DECLARE_BIT(name, _) k##name##Bit, FOR_EACH_FUNCTION_KIND_BIT(DECLARE_BIT) - FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(DECLARE_BIT) + FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(DECLARE_BIT) #undef DECLARE_BIT - kNumTagBits + kNumTagBits }; COMPILE_ASSERT(MethodRecognizer::kNumRecognizedMethods < @@ -10920,11 +10919,50 @@ class DynamicLibrary : public Instance { friend class Class; }; +class LinkedHashBase : public Instance { + public: + static intptr_t InstanceSize() { + return RoundedAllocationSize(sizeof(UntaggedLinkedHashBase)); + } + + static intptr_t type_arguments_offset() { + return OFFSET_OF(UntaggedLinkedHashBase, type_arguments_); + } + + static intptr_t index_offset() { + return OFFSET_OF(UntaggedLinkedHashBase, index_); + } + + static intptr_t data_offset() { + return OFFSET_OF(UntaggedLinkedHashBase, data_); + } + + static intptr_t hash_mask_offset() { + return OFFSET_OF(UntaggedLinkedHashBase, hash_mask_); + } + + static intptr_t used_data_offset() { + return OFFSET_OF(UntaggedLinkedHashBase, used_data_); + } + + static intptr_t deleted_keys_offset() { + return OFFSET_OF(UntaggedLinkedHashBase, deleted_keys_); + } + + protected: + // Keep this in sync with Dart implementation (lib/compact_hash.dart). + static const intptr_t kInitialIndexBits = 2; + static const intptr_t kInitialIndexSize = 1 << (kInitialIndexBits + 1); + + friend class Class; + friend class LinkedHashBaseDeserializationCluster; +}; + // Corresponds to // - "new Map()", // - non-const map literals, and // - the default constructor of LinkedHashMap in dart:collection. -class LinkedHashMap : public Instance { +class LinkedHashMap : public LinkedHashBase { public: static intptr_t InstanceSize() { return RoundedAllocationSize(sizeof(UntaggedLinkedHashMap)); @@ -10950,48 +10988,30 @@ class LinkedHashMap : public Instance { // as canonical. See for example tests/isolate/message3_test.dart. untag()->set_type_arguments(value.ptr()); } - static intptr_t type_arguments_offset() { - return OFFSET_OF(UntaggedLinkedHashMap, type_arguments_); - } TypedDataPtr index() const { return untag()->index(); } void SetIndex(const TypedData& value) const { ASSERT(!value.IsNull()); untag()->set_index(value.ptr()); } - static intptr_t index_offset() { - return OFFSET_OF(UntaggedLinkedHashMap, index_); - } ArrayPtr data() const { return untag()->data(); } void SetData(const Array& value) const { untag()->set_data(value.ptr()); } - static intptr_t data_offset() { - return OFFSET_OF(UntaggedLinkedHashMap, data_); - } SmiPtr hash_mask() const { return untag()->hash_mask(); } void SetHashMask(intptr_t value) const { untag()->set_hash_mask(Smi::New(value)); } - static intptr_t hash_mask_offset() { - return OFFSET_OF(UntaggedLinkedHashMap, hash_mask_); - } SmiPtr used_data() const { return untag()->used_data(); } void SetUsedData(intptr_t value) const { untag()->set_used_data(Smi::New(value)); } - static intptr_t used_data_offset() { - return OFFSET_OF(UntaggedLinkedHashMap, used_data_); - } SmiPtr deleted_keys() const { return untag()->deleted_keys(); } void SetDeletedKeys(intptr_t value) const { untag()->set_deleted_keys(Smi::New(value)); } - static intptr_t deleted_keys_offset() { - return OFFSET_OF(UntaggedLinkedHashMap, deleted_keys_); - } intptr_t Length() const { // The map may be uninitialized. @@ -11042,11 +11062,7 @@ class LinkedHashMap : public Instance { }; private: - FINAL_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap, Instance); - - // Keep this in sync with Dart implementation (lib/compact_hash.dart). - static const intptr_t kInitialIndexBits = 2; - static const intptr_t kInitialIndexSize = 1 << (kInitialIndexBits + 1); + FINAL_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap, LinkedHashBase); // Allocate a map, but leave all fields set to null. // Used during deserialization (since map might contain itself as key/value). diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h index fbbce4cded8..4d0bfbb0173 100644 --- a/runtime/vm/raw_object.h +++ b/runtime/vm/raw_object.h @@ -2113,8 +2113,8 @@ class UntaggedLocalVarDescriptors : public UntaggedObject { TokenPosition begin_pos = TokenPosition::kNoSource; // Token position of scope start. TokenPosition end_pos = - TokenPosition::kNoSource; // Token position of scope end. - int16_t scope_id; // Scope to which the variable belongs. + TokenPosition::kNoSource; // Token position of scope end. + int16_t scope_id; // Scope to which the variable belongs. VarInfoKind kind() const { return static_cast(KindBits::decode(index_kind)); @@ -2986,8 +2986,8 @@ class UntaggedGrowableObjectArray : public UntaggedInstance { friend class ReversePc; }; -class UntaggedLinkedHashMap : public UntaggedInstance { - RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap); +class UntaggedLinkedHashBase : public UntaggedInstance { + RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashBase); COMPRESSED_POINTER_FIELD(TypeArgumentsPtr, type_arguments) VISIT_FROM(type_arguments) @@ -2998,6 +2998,10 @@ class UntaggedLinkedHashMap : public UntaggedInstance { COMPRESSED_POINTER_FIELD(SmiPtr, deleted_keys) VISIT_TO(deleted_keys) CompressedObjectPtr* to_snapshot(Snapshot::Kind kind) { return to(); } +}; + +class UntaggedLinkedHashMap : public UntaggedLinkedHashBase { + RAW_HEAP_OBJECT_IMPLEMENTATION(LinkedHashMap); friend class SnapshotReader; }; diff --git a/runtime/vm/raw_object_fields.cc b/runtime/vm/raw_object_fields.cc index a1d4a895985..9c0d887a456 100644 --- a/runtime/vm/raw_object_fields.cc +++ b/runtime/vm/raw_object_fields.cc @@ -159,12 +159,12 @@ namespace dart { F(GrowableObjectArray, type_arguments_) \ F(GrowableObjectArray, length_) \ F(GrowableObjectArray, data_) \ - F(LinkedHashMap, type_arguments_) \ - F(LinkedHashMap, index_) \ - F(LinkedHashMap, hash_mask_) \ - F(LinkedHashMap, data_) \ - F(LinkedHashMap, used_data_) \ - F(LinkedHashMap, deleted_keys_) \ + F(LinkedHashBase, type_arguments_) \ + F(LinkedHashBase, index_) \ + F(LinkedHashBase, hash_mask_) \ + F(LinkedHashBase, data_) \ + F(LinkedHashBase, used_data_) \ + F(LinkedHashBase, deleted_keys_) \ F(TypedData, length_) \ F(ExternalTypedData, length_) \ F(ReceivePort, send_port_) \ diff --git a/runtime/vm/tagged_pointer.h b/runtime/vm/tagged_pointer.h index dac584b4b7f..4f3b1f68360 100644 --- a/runtime/vm/tagged_pointer.h +++ b/runtime/vm/tagged_pointer.h @@ -394,7 +394,8 @@ DEFINE_TAGGED_POINTER(Bool, Instance) DEFINE_TAGGED_POINTER(Array, Instance) DEFINE_TAGGED_POINTER(ImmutableArray, Array) DEFINE_TAGGED_POINTER(GrowableObjectArray, Instance) -DEFINE_TAGGED_POINTER(LinkedHashMap, Instance) +DEFINE_TAGGED_POINTER(LinkedHashBase, Instance) +DEFINE_TAGGED_POINTER(LinkedHashMap, LinkedHashBase) DEFINE_TAGGED_POINTER(Float32x4, Instance) DEFINE_TAGGED_POINTER(Int32x4, Instance) DEFINE_TAGGED_POINTER(Float64x2, Instance) diff --git a/sdk/lib/_internal/vm/lib/compact_hash.dart b/sdk/lib/_internal/vm/lib/compact_hash.dart index 7ff235473c9..492e9bde3bf 100644 --- a/sdk/lib/_internal/vm/lib/compact_hash.dart +++ b/sdk/lib/_internal/vm/lib/compact_hash.dart @@ -49,42 +49,42 @@ abstract class _HashVMBase { @pragma("vm:recognized", "other") @pragma("vm:exact-result-type", "dart:typed_data#_Uint32List") @pragma("vm:prefer-inline") - Uint32List get _index native "LinkedHashMap_getIndex"; + Uint32List get _index native "LinkedHashBase_getIndex"; @pragma("vm:recognized", "other") @pragma("vm:prefer-inline") - void set _index(Uint32List value) native "LinkedHashMap_setIndex"; + void set _index(Uint32List value) native "LinkedHashBase_setIndex"; @pragma("vm:recognized", "other") @pragma("vm:exact-result-type", "dart:core#_Smi") @pragma("vm:prefer-inline") - int get _hashMask native "LinkedHashMap_getHashMask"; + int get _hashMask native "LinkedHashBase_getHashMask"; @pragma("vm:recognized", "other") @pragma("vm:prefer-inline") - void set _hashMask(int value) native "LinkedHashMap_setHashMask"; + void set _hashMask(int value) native "LinkedHashBase_setHashMask"; @pragma("vm:recognized", "other") @pragma("vm:exact-result-type", "dart:core#_List") @pragma("vm:prefer-inline") - List get _data native "LinkedHashMap_getData"; + List get _data native "LinkedHashBase_getData"; @pragma("vm:recognized", "other") @pragma("vm:prefer-inline") - void set _data(List value) native "LinkedHashMap_setData"; + void set _data(List value) native "LinkedHashBase_setData"; @pragma("vm:recognized", "other") @pragma("vm:exact-result-type", "dart:core#_Smi") @pragma("vm:prefer-inline") - int get _usedData native "LinkedHashMap_getUsedData"; + int get _usedData native "LinkedHashBase_getUsedData"; @pragma("vm:recognized", "other") @pragma("vm:prefer-inline") - void set _usedData(int value) native "LinkedHashMap_setUsedData"; + void set _usedData(int value) native "LinkedHashBase_setUsedData"; @pragma("vm:recognized", "other") @pragma("vm:exact-result-type", "dart:core#_Smi") @pragma("vm:prefer-inline") - int get _deletedKeys native "LinkedHashMap_getDeletedKeys"; + int get _deletedKeys native "LinkedHashBase_getDeletedKeys"; @pragma("vm:recognized", "other") @pragma("vm:prefer-inline") - void set _deletedKeys(int value) native "LinkedHashMap_setDeletedKeys"; + void set _deletedKeys(int value) native "LinkedHashBase_setDeletedKeys"; } // This mixin can be applied to _HashFieldBase or _HashVMBase (for