[vm] Remove _HashFieldBase

This class is structurally equivalent to _HashVMBase and the only reason
for it to exist for inability of normal Dart classes to extend
_HashVMBase - but this can worked around by properly configuring
_HashVMBase class in bootstrapping.

TEST=ci

Change-Id: I5ca401e274920d2b4739424c6b6595306a6a6964
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/494140
Commit-Queue: Slava Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
This commit is contained in:
Slava Egorov
2026-04-13 10:10:42 -07:00
committed by dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent 25bb8ce922
commit fff4f2324d
14 changed files with 142 additions and 108 deletions
+21
View File
@@ -646,6 +646,11 @@ void Object::InitVtables() {
builtin_vtables_[kUnmodifiableByteDataViewCid] = fake_handle.vtable();
}
{
LinkedHashBase fake_handle;
builtin_vtables_[kLinkedHashBaseCid] = fake_handle.vtable();
}
{
Instance fake_handle;
builtin_vtables_[kByteBufferCid] = fake_handle.vtable();
@@ -2143,6 +2148,18 @@ ErrorPtr Object::Init(IsolateGroup* isolate_group,
ASSERT(!lib.IsNull());
ASSERT(lib.ptr() == Library::CompactHashLibrary());
cls = Class::New<LinkedHashBase, RTN::LinkedHashBase>(
kLinkedHashBaseCid, isolate_group, /*register_class=*/true,
/*is_abstract=*/true);
cls.set_type_arguments_field_offset(
LinkedHashBase::type_arguments_offset(),
RTN::LinkedHashBase::type_arguments_offset());
cls.set_is_prefinalized();
isolate_group->class_table()->Register(cls);
RegisterPrivateClass(cls, Symbols::_LinkedHashBase(), lib);
pending_classes.Add(cls);
cls = Class::New<Map, RTN::Map>(isolate_group);
object_store->set_map_impl_class(cls);
cls.set_type_arguments_field_offset(Map::type_arguments_offset(),
@@ -2624,6 +2641,10 @@ ErrorPtr Object::Init(IsolateGroup* isolate_group,
isolate_group);
object_store->set_growable_object_array_class(cls);
cls = Class::New<LinkedHashBase, RTN::LinkedHashBase>(
kLinkedHashBaseCid, isolate_group, /*register_class=*/true,
/*is_abstract=*/true);
cls = Class::New<Map, RTN::Map>(isolate_group);
object_store->set_map_impl_class(cls);