Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
dart::ProgramDeserializationRoots Class Reference
Inheritance diagram for dart::ProgramDeserializationRoots:
dart::DeserializationRoots

Public Member Functions

 ProgramDeserializationRoots (ObjectStore *object_store)
 
void AddBaseObjects (Deserializer *d) override
 
void ReadRoots (Deserializer *d) override
 
void PostLoad (Deserializer *d, const Array &refs) override
 
- Public Member Functions inherited from dart::DeserializationRoots
virtual ~DeserializationRoots ()
 

Detailed Description

Definition at line 7169 of file app_snapshot.cc.

Constructor & Destructor Documentation

◆ ProgramDeserializationRoots()

dart::ProgramDeserializationRoots::ProgramDeserializationRoots ( ObjectStore object_store)
inlineexplicit

Definition at line 7171 of file app_snapshot.cc.

7172 : object_store_(object_store) {}

Member Function Documentation

◆ AddBaseObjects()

void dart::ProgramDeserializationRoots::AddBaseObjects ( Deserializer d)
inlineoverridevirtual

Implements dart::DeserializationRoots.

Definition at line 7174 of file app_snapshot.cc.

7174 {
7175 // N.B.: Skipping index 0 because ref 0 is illegal.
7176 const Array& base_objects = Object::vm_isolate_snapshot_object_table();
7177 for (intptr_t i = kFirstReference; i < base_objects.Length(); i++) {
7178 d->AddBaseObject(base_objects.At(i));
7179 }
7180 }
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d
Definition main.cc:19
static constexpr intptr_t kFirstReference

◆ PostLoad()

void dart::ProgramDeserializationRoots::PostLoad ( Deserializer d,
const Array refs 
)
inlineoverridevirtual

Implements dart::DeserializationRoots.

Definition at line 7202 of file app_snapshot.cc.

7202 {
7203 auto isolate_group = d->isolate_group();
7204 { isolate_group->class_table()->CopySizesFromClassObjects(); }
7205 d->heap()->old_space()->EvaluateAfterLoading();
7206
7207 auto object_store = isolate_group->object_store();
7208 const Array& units = Array::Handle(object_store->loading_units());
7209 if (!units.IsNull()) {
7210 LoadingUnit& unit = LoadingUnit::Handle();
7211 unit ^= units.At(LoadingUnit::kRootId);
7212 unit.set_base_objects(refs);
7213 }
7214
7215 // Setup native resolver for bootstrap impl.
7217 }
static void SetupNativeResolver()
static constexpr intptr_t kRootId
Definition object.h:7940
static Object & Handle()
Definition object.h:407

◆ ReadRoots()

void dart::ProgramDeserializationRoots::ReadRoots ( Deserializer d)
inlineoverridevirtual

Implements dart::DeserializationRoots.

Definition at line 7182 of file app_snapshot.cc.

7182 {
7183 // Read roots.
7184 ObjectPtr* from = object_store_->from();
7185 ObjectPtr* to = object_store_->to_snapshot(d->kind());
7186 for (ObjectPtr* p = from; p <= to; p++) {
7187 *p = d->ReadRef();
7188 }
7189
7190 FieldTable* initial_field_table =
7191 d->thread()->isolate_group()->initial_field_table();
7192 intptr_t n = d->ReadUnsigned();
7193 initial_field_table->AllocateIndex(n - 1);
7194 for (intptr_t i = 0; i < n; i++) {
7195 initial_field_table->SetAt(i, d->ReadRef());
7196 }
7197
7198 // Deserialize dispatch table (when applicable)
7199 d->ReadDispatchTable();
7200 }

The documentation for this class was generated from the following file: