Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Unified Diff: runtime/vm/raw_object_snapshot.cc

Issue 1388543008: 1. Write the backing data array of a GrowableObjectArray as a reference (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: sync-to-tot Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/raw_object.h ('k') | runtime/vm/snapshot.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/raw_object_snapshot.cc
diff --git a/runtime/vm/raw_object_snapshot.cc b/runtime/vm/raw_object_snapshot.cc
index aa2d0d057d3d6a58e45821be4eea506f5b11b342..4241c1e89d3a05832e2b285d1a254af6a8023d6b 100644
--- a/runtime/vm/raw_object_snapshot.cc
+++ b/runtime/vm/raw_object_snapshot.cc
@@ -42,7 +42,8 @@ DECLARE_FLAG(int, optimization_counter_threshold);
RawClass* Class::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
Class& cls = Class::ZoneHandle(reader->zone(), Class::null());
@@ -92,7 +93,8 @@ RawClass* Class::ReadFrom(SnapshotReader* reader,
void RawClass::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
bool is_in_fullsnapshot = Class::IsInFullSnapshot(this);
@@ -148,7 +150,8 @@ void RawClass::WriteTo(SnapshotWriter* writer,
RawUnresolvedClass* UnresolvedClass::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate unresolved class object.
@@ -171,7 +174,8 @@ RawUnresolvedClass* UnresolvedClass::ReadFrom(SnapshotReader* reader,
void RawUnresolvedClass::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -193,7 +197,8 @@ void RawUnresolvedClass::WriteTo(SnapshotWriter* writer,
RawAbstractType* AbstractType::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE(); // AbstractType is an abstract class.
return NULL;
}
@@ -201,7 +206,8 @@ RawAbstractType* AbstractType::ReadFrom(SnapshotReader* reader,
void RawAbstractType::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE(); // AbstractType is an abstract class.
}
@@ -209,7 +215,8 @@ void RawAbstractType::WriteTo(SnapshotWriter* writer,
RawType* Type::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Determine if the type class of this type is in the full snapshot.
@@ -240,7 +247,8 @@ RawType* Type::ReadFrom(SnapshotReader* reader,
void RawType::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Only resolved and finalized types should be written to a snapshot.
@@ -279,7 +287,8 @@ void RawType::WriteTo(SnapshotWriter* writer,
RawTypeRef* TypeRef::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate type ref object.
@@ -298,7 +307,8 @@ RawTypeRef* TypeRef::ReadFrom(SnapshotReader* reader,
void RawTypeRef::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -317,7 +327,8 @@ void RawTypeRef::WriteTo(SnapshotWriter* writer,
RawTypeParameter* TypeParameter::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate type parameter object.
@@ -341,7 +352,8 @@ RawTypeParameter* TypeParameter::ReadFrom(SnapshotReader* reader,
void RawTypeParameter::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Only finalized type parameters should be written to a snapshot.
@@ -368,7 +380,8 @@ void RawTypeParameter::WriteTo(SnapshotWriter* writer,
RawBoundedType* BoundedType::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate bounded type object.
@@ -387,7 +400,8 @@ RawBoundedType* BoundedType::ReadFrom(SnapshotReader* reader,
void RawBoundedType::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -406,7 +420,8 @@ void RawBoundedType::WriteTo(SnapshotWriter* writer,
RawMixinAppType* MixinAppType::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE(); // MixinAppType objects do not survive finalization.
return MixinAppType::null();
}
@@ -414,7 +429,8 @@ RawMixinAppType* MixinAppType::ReadFrom(SnapshotReader* reader,
void RawMixinAppType::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE(); // MixinAppType objects do not survive finalization.
}
@@ -422,7 +438,8 @@ void RawMixinAppType::WriteTo(SnapshotWriter* writer,
RawTypeArguments* TypeArguments::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Read the length so that we can determine instance size to allocate.
@@ -465,7 +482,8 @@ RawTypeArguments* TypeArguments::ReadFrom(SnapshotReader* reader,
void RawTypeArguments::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -494,7 +512,8 @@ void RawTypeArguments::WriteTo(SnapshotWriter* writer,
RawPatchClass* PatchClass::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate function object.
@@ -512,7 +531,8 @@ RawPatchClass* PatchClass::ReadFrom(SnapshotReader* reader,
void RawPatchClass::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -531,7 +551,8 @@ void RawPatchClass::WriteTo(SnapshotWriter* writer,
RawClosureData* ClosureData::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -551,7 +572,8 @@ RawClosureData* ClosureData::ReadFrom(SnapshotReader* reader,
void RawClosureData::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -589,7 +611,8 @@ void RawClosureData::WriteTo(SnapshotWriter* writer,
RawRedirectionData* RedirectionData::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -609,7 +632,8 @@ RawRedirectionData* RedirectionData::ReadFrom(SnapshotReader* reader,
void RawRedirectionData::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -629,7 +653,8 @@ void RawRedirectionData::WriteTo(SnapshotWriter* writer,
RawFunction* Function::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -682,7 +707,8 @@ RawFunction* Function::ReadFrom(SnapshotReader* reader,
void RawFunction::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
bool is_in_fullsnapshot = false;
@@ -750,7 +776,8 @@ void RawFunction::WriteTo(SnapshotWriter* writer,
RawField* Field::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -777,7 +804,8 @@ RawField* Field::ReadFrom(SnapshotReader* reader,
void RawField::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -829,7 +857,8 @@ void RawField::WriteTo(SnapshotWriter* writer,
RawLiteralToken* LiteralToken::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT(kind != Snapshot::kMessage);
@@ -853,7 +882,8 @@ RawLiteralToken* LiteralToken::ReadFrom(SnapshotReader* reader,
void RawLiteralToken::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT(kind != Snapshot::kMessage);
@@ -876,7 +906,8 @@ void RawLiteralToken::WriteTo(SnapshotWriter* writer,
RawTokenStream* TokenStream::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -909,7 +940,8 @@ RawTokenStream* TokenStream::ReadFrom(SnapshotReader* reader,
void RawTokenStream::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -936,7 +968,8 @@ void RawTokenStream::WriteTo(SnapshotWriter* writer,
RawScript* Script::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -970,7 +1003,8 @@ RawScript* Script::ReadFrom(SnapshotReader* reader,
void RawScript::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT(tokens_ != TokenStream::null());
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -996,7 +1030,8 @@ void RawScript::WriteTo(SnapshotWriter* writer,
RawLibrary* Library::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT(kind != Snapshot::kMessage);
@@ -1063,7 +1098,8 @@ RawLibrary* Library::ReadFrom(SnapshotReader* reader,
void RawLibrary::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT(kind != Snapshot::kMessage);
@@ -1109,7 +1145,8 @@ void RawLibrary::WriteTo(SnapshotWriter* writer,
RawLibraryPrefix* LibraryPrefix::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -1136,7 +1173,8 @@ RawLibraryPrefix* LibraryPrefix::ReadFrom(SnapshotReader* reader,
void RawLibraryPrefix::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -1161,7 +1199,8 @@ void RawLibraryPrefix::WriteTo(SnapshotWriter* writer,
RawNamespace* Namespace::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -1179,7 +1218,8 @@ RawNamespace* Namespace::ReadFrom(SnapshotReader* reader,
void RawNamespace::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
@@ -1199,7 +1239,8 @@ void RawNamespace::WriteTo(SnapshotWriter* writer,
RawCode* Code::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1226,7 +1267,8 @@ RawCode* Code::ReadFrom(SnapshotReader* reader,
void RawCode::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1260,7 +1302,8 @@ void RawCode::WriteTo(SnapshotWriter* writer,
RawInstructions* Instructions::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1277,7 +1320,8 @@ RawInstructions* Instructions::ReadFrom(SnapshotReader* reader,
void RawInstructions::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1300,7 +1344,8 @@ void RawInstructions::WriteTo(SnapshotWriter* writer,
RawObjectPool* ObjectPool::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1353,49 +1398,63 @@ RawObjectPool* ObjectPool::ReadFrom(SnapshotReader* reader,
void RawObjectPool::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
+ intptr_t tags = writer->GetObjectTags(this);
+ intptr_t length = ptr()->length_;
- // Write out the serialization header value for this object.
- writer->WriteInlinedObjectHeader(object_id);
+ if (as_reference) {
+ // Write out the serialization header value for this object.
+ writer->WriteInlinedObjectHeader(kOmittedObjectId);
- // Write out the class and tags information.
- writer->WriteVMIsolateObject(kObjectPoolCid);
- writer->WriteTags(writer->GetObjectTags(this));
+ // Write out the class information.
+ writer->WriteVMIsolateObject(kObjectPoolCid);
+ writer->WriteTags(tags);
- intptr_t length = ptr()->length_;
- RawTypedData* info_array = ptr()->info_array_->ptr();
- ASSERT(info_array != TypedData::null());
+ // Write out the length field.
+ writer->Write<intptr_t>(length);
+ } else {
+ // Write out the serialization header value for this object.
+ writer->WriteInlinedObjectHeader(object_id);
- writer->Write<intptr_t>(length);
- for (intptr_t i = 0; i < length; i++) {
- ObjectPool::EntryType entry_type =
- static_cast<ObjectPool::EntryType>(info_array->data()[i]);
- writer->Write<int8_t>(entry_type);
- Entry& entry = ptr()->data()[i];
- switch (entry_type) {
- case ObjectPool::kTaggedObject: {
- if (entry.raw_obj_ == StubCode::CallNativeCFunction_entry()->code()) {
- // Natives can run while precompiling, becoming linked and switching
- // their stub. Reset to the initial stub used for lazy-linking.
- writer->WriteObjectImpl(
- StubCode::CallBootstrapCFunction_entry()->code(), kAsReference);
- } else {
- writer->WriteObjectImpl(entry.raw_obj_, kAsReference);
+ // Write out the class and tags information.
+ writer->WriteVMIsolateObject(kObjectPoolCid);
+ writer->WriteTags(tags);
+
+ RawTypedData* info_array = ptr()->info_array_->ptr();
+ ASSERT(info_array != TypedData::null());
+
+ writer->Write<intptr_t>(length);
+ for (intptr_t i = 0; i < length; i++) {
+ ObjectPool::EntryType entry_type =
+ static_cast<ObjectPool::EntryType>(info_array->data()[i]);
+ writer->Write<int8_t>(entry_type);
+ Entry& entry = ptr()->data()[i];
+ switch (entry_type) {
+ case ObjectPool::kTaggedObject: {
+ if (entry.raw_obj_ == StubCode::CallNativeCFunction_entry()->code()) {
+ // Natives can run while precompiling, becoming linked and switching
+ // their stub. Reset to the initial stub used for lazy-linking.
+ writer->WriteObjectImpl(
+ StubCode::CallBootstrapCFunction_entry()->code(), kAsReference);
+ } else {
+ writer->WriteObjectImpl(entry.raw_obj_, kAsReference);
+ }
+ break;
}
- break;
- }
- case ObjectPool::kImmediate: {
- writer->Write<intptr_t>(entry.raw_value_);
- break;
- }
- case ObjectPool::kNativeEntry: {
- // Write nothing. Will initialize with the lazy link entry.
- break;
+ case ObjectPool::kImmediate: {
+ writer->Write<intptr_t>(entry.raw_value_);
+ break;
+ }
+ case ObjectPool::kNativeEntry: {
+ // Write nothing. Will initialize with the lazy link entry.
+ break;
+ }
+ default:
+ UNREACHABLE();
}
- default:
- UNREACHABLE();
}
}
}
@@ -1404,7 +1463,8 @@ void RawObjectPool::WriteTo(SnapshotWriter* writer,
RawPcDescriptors* PcDescriptors::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1427,7 +1487,8 @@ RawPcDescriptors* PcDescriptors::ReadFrom(SnapshotReader* reader,
void RawPcDescriptors::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1447,7 +1508,8 @@ void RawPcDescriptors::WriteTo(SnapshotWriter* writer,
RawStackmap* Stackmap::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1473,7 +1535,8 @@ RawStackmap* Stackmap::ReadFrom(SnapshotReader* reader,
void RawStackmap::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1496,7 +1559,8 @@ void RawStackmap::WriteTo(SnapshotWriter* writer,
RawLocalVarDescriptors* LocalVarDescriptors::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1528,7 +1592,8 @@ RawLocalVarDescriptors* LocalVarDescriptors::ReadFrom(SnapshotReader* reader,
void RawLocalVarDescriptors::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1551,7 +1616,8 @@ void RawLocalVarDescriptors::WriteTo(SnapshotWriter* writer,
RawExceptionHandlers* ExceptionHandlers::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1581,7 +1647,8 @@ RawExceptionHandlers* ExceptionHandlers::ReadFrom(SnapshotReader* reader,
void RawExceptionHandlers::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1604,7 +1671,8 @@ void RawExceptionHandlers::WriteTo(SnapshotWriter* writer,
RawContext* Context::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate context object.
@@ -1632,7 +1700,8 @@ RawContext* Context::ReadFrom(SnapshotReader* reader,
void RawContext::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -1656,7 +1725,8 @@ void RawContext::WriteTo(SnapshotWriter* writer,
RawContextScope* ContextScope::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate context object.
@@ -1690,7 +1760,8 @@ RawContextScope* ContextScope::ReadFrom(SnapshotReader* reader,
void RawContextScope::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
if (ptr()->is_implicit_) {
@@ -1719,7 +1790,8 @@ void RawContextScope::WriteTo(SnapshotWriter* writer,
RawICData* ICData::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
ICData& result = ICData::ZoneHandle(reader->zone(), NEW_OBJECT(ICData));
@@ -1739,7 +1811,8 @@ RawICData* ICData::ReadFrom(SnapshotReader* reader,
void RawICData::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
// Write out the serialization header value for this object.
@@ -1762,7 +1835,8 @@ void RawICData::WriteTo(SnapshotWriter* writer,
RawMegamorphicCache* MegamorphicCache::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1784,7 +1858,8 @@ RawMegamorphicCache* MegamorphicCache::ReadFrom(SnapshotReader* reader,
void RawMegamorphicCache::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1807,7 +1882,8 @@ void RawMegamorphicCache::WriteTo(SnapshotWriter* writer,
RawSubtypeTestCache* SubtypeTestCache::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1829,7 +1905,8 @@ RawSubtypeTestCache* SubtypeTestCache::ReadFrom(SnapshotReader* reader,
void RawSubtypeTestCache::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer->snapshot_code());
ASSERT(kind == Snapshot::kFull);
@@ -1848,7 +1925,8 @@ void RawSubtypeTestCache::WriteTo(SnapshotWriter* writer,
RawError* Error::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_referenec) {
UNREACHABLE();
return Error::null(); // Error is an abstract class.
}
@@ -1856,7 +1934,8 @@ RawError* Error::ReadFrom(SnapshotReader* reader,
void RawError::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE(); // Error is an abstract class.
}
@@ -1864,7 +1943,8 @@ void RawError::WriteTo(SnapshotWriter* writer,
RawApiError* ApiError::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate ApiError object.
@@ -1883,7 +1963,8 @@ RawApiError* ApiError::ReadFrom(SnapshotReader* reader,
void RawApiError::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -1902,7 +1983,8 @@ void RawApiError::WriteTo(SnapshotWriter* writer,
RawLanguageError* LanguageError::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate LanguageError object.
@@ -1925,7 +2007,8 @@ RawLanguageError* LanguageError::ReadFrom(SnapshotReader* reader,
void RawLanguageError::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -1948,7 +2031,8 @@ void RawLanguageError::WriteTo(SnapshotWriter* writer,
RawUnhandledException* UnhandledException::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UnhandledException& result = UnhandledException::ZoneHandle(
reader->zone(), NEW_OBJECT(UnhandledException));
reader->AddBackRef(object_id, &result, kIsDeserialized);
@@ -1964,7 +2048,8 @@ RawUnhandledException* UnhandledException::ReadFrom(SnapshotReader* reader,
void RawUnhandledException::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1980,7 +2065,8 @@ void RawUnhandledException::WriteTo(SnapshotWriter* writer,
RawUnwindError* UnwindError::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE();
return UnwindError::null();
}
@@ -1988,7 +2074,8 @@ RawUnwindError* UnwindError::ReadFrom(SnapshotReader* reader,
void RawUnwindError::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE();
}
@@ -1996,7 +2083,8 @@ void RawUnwindError::WriteTo(SnapshotWriter* writer,
RawInstance* Instance::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Create an Instance object or get canonical one if it is a canonical
@@ -2024,7 +2112,8 @@ RawInstance* Instance::ReadFrom(SnapshotReader* reader,
void RawInstance::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -2039,7 +2128,8 @@ void RawInstance::WriteTo(SnapshotWriter* writer,
RawInteger* Mint::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Read the 64 bit value for the object.
@@ -2082,7 +2172,8 @@ RawInteger* Mint::ReadFrom(SnapshotReader* reader,
void RawMint::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -2100,7 +2191,8 @@ void RawMint::WriteTo(SnapshotWriter* writer,
RawBigint* Bigint::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate bigint object.
@@ -2131,7 +2223,8 @@ RawBigint* Bigint::ReadFrom(SnapshotReader* reader,
void RawBigint::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -2150,7 +2243,8 @@ void RawBigint::WriteTo(SnapshotWriter* writer,
RawDouble* Double::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT(kind != Snapshot::kMessage);
// Read the double value for the object.
@@ -2183,7 +2277,8 @@ RawDouble* Double::ReadFrom(SnapshotReader* reader,
void RawDouble::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -2201,7 +2296,8 @@ void RawDouble::WriteTo(SnapshotWriter* writer,
RawString* String::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE(); // String is an abstract class.
return String::null();
}
@@ -2209,7 +2305,8 @@ RawString* String::ReadFrom(SnapshotReader* reader,
void RawString::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE(); // String is an abstract class.
}
@@ -2250,7 +2347,8 @@ void String::ReadFromImpl(SnapshotReader* reader,
RawOneByteString* OneByteString::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
// Read the length so that we can determine instance size to allocate.
ASSERT(reader != NULL);
intptr_t len = reader->ReadSmiValue();
@@ -2284,7 +2382,8 @@ RawOneByteString* OneByteString::ReadFrom(SnapshotReader* reader,
RawTwoByteString* TwoByteString::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
// Read the length so that we can determine instance size to allocate.
ASSERT(reader != NULL);
intptr_t len = reader->ReadSmiValue();
@@ -2355,7 +2454,8 @@ static void StringWriteTo(SnapshotWriter* writer,
void RawOneByteString::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
StringWriteTo(writer,
object_id,
kind,
@@ -2369,7 +2469,8 @@ void RawOneByteString::WriteTo(SnapshotWriter* writer,
void RawTwoByteString::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
StringWriteTo(writer,
object_id,
kind,
@@ -2385,7 +2486,8 @@ RawExternalOneByteString* ExternalOneByteString::ReadFrom(
SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE();
return ExternalOneByteString::null();
}
@@ -2395,7 +2497,8 @@ RawExternalTwoByteString* ExternalTwoByteString::ReadFrom(
SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE();
return ExternalTwoByteString::null();
}
@@ -2403,7 +2506,8 @@ RawExternalTwoByteString* ExternalTwoByteString::ReadFrom(
void RawExternalOneByteString::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
// Serialize as a non-external one byte string.
StringWriteTo(writer,
object_id,
@@ -2418,7 +2522,8 @@ void RawExternalOneByteString::WriteTo(SnapshotWriter* writer,
void RawExternalTwoByteString::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
// Serialize as a non-external two byte string.
StringWriteTo(writer,
object_id,
@@ -2434,7 +2539,8 @@ void RawExternalTwoByteString::WriteTo(SnapshotWriter* writer,
RawBool* Bool::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE();
return Bool::null();
}
@@ -2442,7 +2548,8 @@ RawBool* Bool::ReadFrom(SnapshotReader* reader,
void RawBool::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE();
}
@@ -2450,7 +2557,8 @@ void RawBool::WriteTo(SnapshotWriter* writer,
RawArray* Array::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Read the length so that we can determine instance size to allocate.
@@ -2471,7 +2579,8 @@ RawArray* Array::ReadFrom(SnapshotReader* reader,
RawImmutableArray* ImmutableArray::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Read the length so that we can determine instance size to allocate.
@@ -2497,33 +2606,38 @@ RawImmutableArray* ImmutableArray::ReadFrom(SnapshotReader* reader,
void RawArray::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(!RawObject::IsCanonical(writer->GetObjectTags(this)));
writer->ArrayWriteTo(object_id,
kArrayCid,
writer->GetObjectTags(this),
ptr()->length_,
ptr()->type_arguments_,
- ptr()->data());
+ ptr()->data(),
+ as_reference);
}
void RawImmutableArray::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
writer->ArrayWriteTo(object_id,
kImmutableArrayCid,
writer->GetObjectTags(this),
ptr()->length_,
ptr()->type_arguments_,
- ptr()->data());
+ ptr()->data(),
+ as_reference);
}
RawGrowableObjectArray* GrowableObjectArray::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Read the length so that we can determine instance size to allocate.
@@ -2548,7 +2662,7 @@ RawGrowableObjectArray* GrowableObjectArray::ReadFrom(SnapshotReader* reader,
array.SetLength(reader->ReadSmiValue());
// Read the backing array of growable array object.
- *(reader->ArrayHandle()) ^= reader->ReadObjectImpl(kAsInlinedObject);
+ *(reader->ArrayHandle()) ^= reader->ReadObjectImpl(kAsReference);
array.SetData(*(reader->ArrayHandle()));
return array.raw();
@@ -2557,7 +2671,8 @@ RawGrowableObjectArray* GrowableObjectArray::ReadFrom(SnapshotReader* reader,
void RawGrowableObjectArray::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -2574,14 +2689,15 @@ void RawGrowableObjectArray::WriteTo(SnapshotWriter* writer,
writer->Write<RawObject*>(ptr()->length_);
// Write out the Array object.
- writer->WriteObjectImpl(ptr()->data_, kAsInlinedObject);
+ writer->WriteObjectImpl(ptr()->data_, kAsReference);
}
RawLinkedHashMap* LinkedHashMap::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
LinkedHashMap& map = LinkedHashMap::ZoneHandle(
@@ -2632,9 +2748,9 @@ RawLinkedHashMap* LinkedHashMap::ReadFrom(SnapshotReader* reader,
map.SetHashMask(0); // Prefer sentinel 0 over null for better type feedback.
// Read the keys and values.
- bool as_reference = RawObject::IsCanonical(tags) ? false : true;
+ bool read_as_reference = RawObject::IsCanonical(tags) ? false : true;
for (intptr_t i = 0; i < used_data; i++) {
- *reader->PassiveObjectHandle() = reader->ReadObjectImpl(as_reference);
+ *reader->PassiveObjectHandle() = reader->ReadObjectImpl(read_as_reference);
data.SetAt(i, *reader->PassiveObjectHandle());
}
return map.raw();
@@ -2643,7 +2759,8 @@ RawLinkedHashMap* LinkedHashMap::ReadFrom(SnapshotReader* reader,
void RawLinkedHashMap::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
if ((kind == Snapshot::kFull && !writer->snapshot_code()) ||
kind == Snapshot::kScript) {
// The immutable maps that seed map literals are not yet VM-internal, so
@@ -2670,7 +2787,7 @@ void RawLinkedHashMap::WriteTo(SnapshotWriter* writer,
writer->Write<RawObject*>(Smi::New((used_data >> 1) - deleted_keys));
// Write out the keys and values.
- const bool as_reference = RawObject::IsCanonical(tags) ? false : true;
+ bool write_as_reference = RawObject::IsCanonical(tags) ? false : true;
RawArray* data_array = ptr()->data_;
RawObject** data_elements = data_array->ptr()->data();
ASSERT(used_data <= Smi::Value(data_array->ptr()->length_));
@@ -2686,8 +2803,8 @@ void RawLinkedHashMap::WriteTo(SnapshotWriter* writer,
continue;
}
RawObject* value = data_elements[i + 1];
- writer->WriteObjectImpl(key, as_reference);
- writer->WriteObjectImpl(value, as_reference);
+ writer->WriteObjectImpl(key, write_as_reference);
+ writer->WriteObjectImpl(value, write_as_reference);
}
DEBUG_ASSERT(deleted_keys_found == deleted_keys);
}
@@ -2696,7 +2813,8 @@ void RawLinkedHashMap::WriteTo(SnapshotWriter* writer,
RawFloat32x4* Float32x4::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Read the values.
float value0 = reader->Read<float>();
@@ -2719,7 +2837,8 @@ RawFloat32x4* Float32x4::ReadFrom(SnapshotReader* reader,
void RawFloat32x4::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -2740,7 +2859,8 @@ void RawFloat32x4::WriteTo(SnapshotWriter* writer,
RawInt32x4* Int32x4::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Read the values.
uint32_t value0 = reader->Read<uint32_t>();
@@ -2763,7 +2883,8 @@ RawInt32x4* Int32x4::ReadFrom(SnapshotReader* reader,
void RawInt32x4::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -2784,7 +2905,8 @@ void RawInt32x4::WriteTo(SnapshotWriter* writer,
RawFloat64x2* Float64x2::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Read the values.
double value0 = reader->Read<double>();
@@ -2805,7 +2927,8 @@ RawFloat64x2* Float64x2::ReadFrom(SnapshotReader* reader,
void RawFloat64x2::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -2830,7 +2953,8 @@ void RawFloat64x2::WriteTo(SnapshotWriter* writer,
RawTypedData* TypedData::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
intptr_t cid = RawObject::ClassIdTag::decode(tags);
@@ -2887,7 +3011,8 @@ RawTypedData* TypedData::ReadFrom(SnapshotReader* reader,
RawExternalTypedData* ExternalTypedData::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(kind != Snapshot::kFull);
intptr_t cid = RawObject::ClassIdTag::decode(tags);
intptr_t length = reader->ReadSmiValue();
@@ -2915,7 +3040,8 @@ RawExternalTypedData* ExternalTypedData::ReadFrom(SnapshotReader* reader,
void RawTypedData::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
intptr_t tags = writer->GetObjectTags(this);
intptr_t cid = ClassIdTag::decode(tags);
@@ -2988,7 +3114,8 @@ void RawTypedData::WriteTo(SnapshotWriter* writer,
void RawExternalTypedData::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
intptr_t tags = writer->GetObjectTags(this);
intptr_t cid = ClassIdTag::decode(tags);
@@ -3042,7 +3169,8 @@ void RawExternalTypedData::WriteTo(SnapshotWriter* writer,
RawCapability* Capability::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
uint64_t id = reader->Read<uint64_t>();
Capability& result = Capability::ZoneHandle(reader->zone(),
@@ -3054,7 +3182,8 @@ RawCapability* Capability::ReadFrom(SnapshotReader* reader,
void RawCapability::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -3069,7 +3198,8 @@ void RawCapability::WriteTo(SnapshotWriter* writer,
RawReceivePort* ReceivePort::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE();
return ReceivePort::null();
}
@@ -3077,7 +3207,8 @@ RawReceivePort* ReceivePort::ReadFrom(SnapshotReader* reader,
void RawReceivePort::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
if (kind == Snapshot::kMessage) {
// We do not allow objects with native fields in an isolate message.
writer->SetWriteException(Exceptions::kArgument,
@@ -3092,7 +3223,8 @@ void RawReceivePort::WriteTo(SnapshotWriter* writer,
RawSendPort* SendPort::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(kind == Snapshot::kMessage || reader->snapshot_code());
uint64_t id = reader->Read<uint64_t>();
@@ -3112,7 +3244,8 @@ RawSendPort* SendPort::ReadFrom(SnapshotReader* reader,
void RawSendPort::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -3128,7 +3261,8 @@ void RawSendPort::WriteTo(SnapshotWriter* writer,
RawStacktrace* Stacktrace::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
if (kind == Snapshot::kFull) {
Stacktrace& result = Stacktrace::ZoneHandle(reader->zone(),
reader->NewStacktrace());
@@ -3151,7 +3285,8 @@ RawStacktrace* Stacktrace::ReadFrom(SnapshotReader* reader,
void RawStacktrace::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
if (kind == Snapshot::kFull) {
ASSERT(writer != NULL);
ASSERT(this == Isolate::Current()->object_store()->
@@ -3181,7 +3316,8 @@ void RawStacktrace::WriteTo(SnapshotWriter* writer,
RawJSRegExp* JSRegExp::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
ASSERT(kind == Snapshot::kMessage);
@@ -3207,7 +3343,8 @@ RawJSRegExp* JSRegExp::ReadFrom(SnapshotReader* reader,
void RawJSRegExp::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
ASSERT(kind == Snapshot::kMessage);
@@ -3229,7 +3366,8 @@ void RawJSRegExp::WriteTo(SnapshotWriter* writer,
RawWeakProperty* WeakProperty::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(reader != NULL);
// Allocate the weak property object.
@@ -3247,8 +3385,9 @@ RawWeakProperty* WeakProperty::ReadFrom(SnapshotReader* reader,
void RawWeakProperty::WriteTo(SnapshotWriter* writer,
- intptr_t object_id,
- Snapshot::Kind kind) {
+ intptr_t object_id,
+ Snapshot::Kind kind,
+ bool as_reference) {
ASSERT(writer != NULL);
// Write out the serialization header value for this object.
@@ -3265,9 +3404,10 @@ void RawWeakProperty::WriteTo(SnapshotWriter* writer,
RawMirrorReference* MirrorReference::ReadFrom(SnapshotReader* reader,
- intptr_t object_id,
- intptr_t tags,
- Snapshot::Kind kind) {
+ intptr_t object_id,
+ intptr_t tags,
+ Snapshot::Kind kind,
+ bool as_referenec) {
UNREACHABLE();
return MirrorReference::null();
}
@@ -3275,7 +3415,8 @@ RawMirrorReference* MirrorReference::ReadFrom(SnapshotReader* reader,
void RawMirrorReference::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
if (kind == Snapshot::kMessage) {
// We do not allow objects with native fields in an isolate message.
writer->SetWriteException(Exceptions::kArgument,
@@ -3290,7 +3431,8 @@ void RawMirrorReference::WriteTo(SnapshotWriter* writer,
RawUserTag* UserTag::ReadFrom(SnapshotReader* reader,
intptr_t object_id,
intptr_t tags,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
UNREACHABLE();
return UserTag::null();
}
@@ -3298,7 +3440,8 @@ RawUserTag* UserTag::ReadFrom(SnapshotReader* reader,
void RawUserTag::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
- Snapshot::Kind kind) {
+ Snapshot::Kind kind,
+ bool as_reference) {
if (kind == Snapshot::kMessage) {
// We do not allow objects with native fields in an isolate message.
writer->SetWriteException(Exceptions::kArgument,
« no previous file with comments | « runtime/vm/raw_object.h ('k') | runtime/vm/snapshot.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698