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

Unified Diff: runtime/vm/raw_object_snapshot.cc

Issue 1918313003: Split Snapshot::kFull into kCore, kAppWithJIT, and kAppNoJIT. Remove snapshot_code flag. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 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
Index: runtime/vm/raw_object_snapshot.cc
diff --git a/runtime/vm/raw_object_snapshot.cc b/runtime/vm/raw_object_snapshot.cc
index 40c1e3481e00a572db3a1acd493a3450e025b6cb..39b0821015719bdba14e4a2229a523c50852d012 100644
--- a/runtime/vm/raw_object_snapshot.cc
+++ b/runtime/vm/raw_object_snapshot.cc
@@ -13,13 +13,13 @@
namespace dart {
#define NEW_OBJECT(type) \
- ((kind == Snapshot::kFull) ? reader->New##type() : type::New())
+ ((Snapshot::IsFull(kind)) ? reader->New##type() : type::New())
#define NEW_OBJECT_WITH_LEN(type, len) \
- ((kind == Snapshot::kFull) ? reader->New##type(len) : type::New(len))
+ ((Snapshot::IsFull(kind)) ? reader->New##type(len) : type::New(len))
#define NEW_OBJECT_WITH_LEN_SPACE(type, len, kind) \
- ((kind == Snapshot::kFull) ? \
+ ((Snapshot::IsFull(kind)) ? \
reader->New##type(len) : type::New(len, HEAP_SPACE(kind)))
#define OFFSET_OF_FROM(obj) \
@@ -46,13 +46,13 @@ RawClass* Class::ReadFrom(SnapshotReader* reader,
Class& cls = Class::ZoneHandle(reader->zone(), Class::null());
bool is_in_fullsnapshot = reader->Read<bool>();
- if ((kind == Snapshot::kFull) ||
+ if (Snapshot::IsFull(kind) ||
(kind == Snapshot::kScript && !is_in_fullsnapshot)) {
// Read in the base information.
classid_t class_id = reader->ReadClassIDValue();
// Allocate class object of specified kind.
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
cls = reader->NewClass(class_id);
} else {
if (class_id < kNumPredefinedCids) {
@@ -79,7 +79,7 @@ RawClass* Class::ReadFrom(SnapshotReader* reader,
// Set all the object fields.
READ_OBJECT_FIELDS(cls, cls.raw()->from(), cls.raw()->to(), kAsReference);
- ASSERT(!cls.IsInFullSnapshot() || (kind == Snapshot::kFull));
+ ASSERT(!cls.IsInFullSnapshot() || (Snapshot::IsFull(kind)));
} else {
cls ^= reader->ReadClassId(object_id);
ASSERT((kind == Snapshot::kMessage) || cls.IsInFullSnapshot());
@@ -107,7 +107,7 @@ void RawClass::WriteTo(SnapshotWriter* writer,
// to be interpreted.
writer->Write<bool>(is_in_fullsnapshot);
- if ((kind == Snapshot::kFull) ||
+ if (Snapshot::IsFull(kind) ||
(kind == Snapshot::kScript && !is_in_fullsnapshot)) {
// Write out all the non object pointer fields.
// NOTE: cpp_vtable_ is not written.
@@ -225,7 +225,7 @@ RawType* Type::ReadFrom(SnapshotReader* reader,
Type& type = Type::ZoneHandle(reader->zone(), NEW_OBJECT(Type));
bool is_canonical = RawObject::IsCanonical(tags);
bool defer_canonicalization = is_canonical &&
- (kind != Snapshot::kFull && typeclass_is_in_fullsnapshot);
+ (!Snapshot::IsFull(kind) && typeclass_is_in_fullsnapshot);
reader->AddBackRef(object_id, &type, kIsDeserialized, defer_canonicalization);
// Set all non object fields.
@@ -446,14 +446,14 @@ RawTypeArguments* TypeArguments::ReadFrom(SnapshotReader* reader,
TypeArguments& type_arguments = TypeArguments::ZoneHandle(
reader->zone(), NEW_OBJECT_WITH_LEN_SPACE(TypeArguments, len, kind));
bool is_canonical = RawObject::IsCanonical(tags);
- bool defer_canonicalization = is_canonical && (kind != Snapshot::kFull);
+ bool defer_canonicalization = is_canonical && (!Snapshot::IsFull(kind));
reader->AddBackRef(object_id,
&type_arguments,
kIsDeserialized,
defer_canonicalization);
// Set the instantiations field, which is only read from a full snapshot.
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
*(reader->ArrayHandle()) ^= reader->ReadObjectImpl(kAsInlinedObject);
type_arguments.set_instantiations(*(reader->ArrayHandle()));
} else {
@@ -495,7 +495,7 @@ void RawTypeArguments::WriteTo(SnapshotWriter* writer,
writer->Write<RawObject*>(ptr()->length_);
// Write out the instantiations field, but only in a full snapshot.
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
writer->WriteObjectImpl(ptr()->instantiations_, kAsInlinedObject);
}
@@ -522,7 +522,7 @@ RawPatchClass* PatchClass::ReadFrom(SnapshotReader* reader,
// Set all the object fields.
READ_OBJECT_FIELDS(cls, cls.raw()->from(), cls.raw()->to(), kAsReference);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
return cls.raw();
}
@@ -532,7 +532,7 @@ void RawPatchClass::WriteTo(SnapshotWriter* writer,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(writer != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -552,7 +552,7 @@ RawClosure* Closure::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IsFull(kind));
// Allocate closure object.
Closure& closure = Closure::ZoneHandle(
@@ -607,7 +607,7 @@ RawClosureData* ClosureData::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Allocate closure data object.
ClosureData& data = ClosureData::ZoneHandle(
@@ -628,7 +628,7 @@ void RawClosureData::WriteTo(SnapshotWriter* writer,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(writer != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -666,7 +666,7 @@ RawRedirectionData* RedirectionData::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Allocate redirection data object.
RedirectionData& data = RedirectionData::ZoneHandle(
@@ -687,7 +687,7 @@ void RawRedirectionData::WriteTo(SnapshotWriter* writer,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(writer != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -708,10 +708,10 @@ RawFunction* Function::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
bool is_in_fullsnapshot = reader->Read<bool>();
- if ((kind == Snapshot::kFull) || !is_in_fullsnapshot) {
+ if ((Snapshot::IsFull(kind)) || !is_in_fullsnapshot) {
// Allocate function object.
Function& func = Function::ZoneHandle(
reader->zone(), NEW_OBJECT(Function));
@@ -726,7 +726,7 @@ RawFunction* Function::ReadFrom(SnapshotReader* reader,
func.set_kind_tag(reader->Read<uint32_t>());
func.set_token_pos(TokenPosition::SnapshotDecode(token_pos));
func.set_end_token_pos(TokenPosition::SnapshotDecode(end_token_pos));
- if (reader->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
func.set_usage_counter(0);
func.set_deoptimization_counter(0);
func.set_optimized_instruction_count(0);
@@ -744,7 +744,7 @@ RawFunction* Function::ReadFrom(SnapshotReader* reader,
func.raw()->from(), func.raw()->to_snapshot(),
kAsReference);
// Initialize all fields that are not part of the snapshot.
- if (reader->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
func.ClearICDataArray();
func.ClearCode();
// Read the code object and fixup entry point.
@@ -773,7 +773,7 @@ void RawFunction::WriteTo(SnapshotWriter* writer,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(writer != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
bool is_in_fullsnapshot = false;
bool owner_is_class = false;
if ((kind == Snapshot::kScript) && !Function::IsSignatureFunction(this)) {
@@ -798,7 +798,7 @@ void RawFunction::WriteTo(SnapshotWriter* writer,
// to be interpreted.
writer->Write<bool>(is_in_fullsnapshot);
- if (kind == Snapshot::kFull || !is_in_fullsnapshot) {
+ if (Snapshot::IsFull(kind) || !is_in_fullsnapshot) {
bool is_optimized = Code::IsOptimized(ptr()->code_);
// Write out all the non object fields.
@@ -807,7 +807,7 @@ void RawFunction::WriteTo(SnapshotWriter* writer,
writer->Write<int16_t>(ptr()->num_fixed_parameters_);
writer->Write<int16_t>(ptr()->num_optional_parameters_);
writer->Write<uint32_t>(ptr()->kind_tag_);
- if (writer->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
// Omit fields used to support de/reoptimization.
} else {
if (is_optimized) {
@@ -823,7 +823,7 @@ void RawFunction::WriteTo(SnapshotWriter* writer,
// Write out all the object pointer fields.
SnapshotWriterVisitor visitor(writer, kAsReference);
visitor.VisitPointers(from(), to_snapshot());
- if (writer->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
ASSERT(ptr()->ic_data_array_ == Array::null());
ASSERT((ptr()->code_ == ptr()->unoptimized_code_) ||
(ptr()->unoptimized_code_ == Code::null()));
@@ -846,14 +846,14 @@ RawField* Field::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Allocate field object.
Field& field = Field::ZoneHandle(reader->zone(), NEW_OBJECT(Field));
reader->AddBackRef(object_id, &field, kIsDeserialized);
// Set all non object fields.
- if (reader->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
field.set_token_pos(TokenPosition::kNoSource);
ASSERT(!FLAG_use_field_guards);
} else {
@@ -865,7 +865,7 @@ RawField* Field::ReadFrom(SnapshotReader* reader,
field.set_kind_bits(reader->Read<uint8_t>());
// Set all the object fields.
- RawObject** toobj = reader->snapshot_code()
+ RawObject** toobj = Snapshot::IncludesCode(kind)
? field.raw()->to_precompiled_snapshot()
: field.raw()->to();
siva 2016/04/26 22:27:47 Why not add a to_snapshot(kind) function here to f
rmacnak 2016/04/26 23:38:23 Done.
READ_OBJECT_FIELDS(field,
@@ -890,7 +890,7 @@ void RawField::WriteTo(SnapshotWriter* writer,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(writer != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -900,7 +900,7 @@ void RawField::WriteTo(SnapshotWriter* writer,
writer->WriteTags(writer->GetObjectTags(this));
// Write out all the non object fields.
- if (!writer->snapshot_code()) {
+ if (!Snapshot::IncludesCode(kind)) {
writer->Write<int32_t>(ptr()->token_pos_.SnapshotEncode());
writer->Write<int32_t>(ptr()->guarded_cid_);
writer->Write<int32_t>(ptr()->is_nullable_);
@@ -915,7 +915,7 @@ void RawField::WriteTo(SnapshotWriter* writer,
writer->WriteObjectImpl(ptr()->type_, kAsReference);
// Write out the initial static value or field offset.
if (Field::StaticBit::decode(ptr()->kind_bits_)) {
- if (writer->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
// For precompiled static fields, the value was already reset and
// initializer_ now contains a Function.
writer->WriteObjectImpl(ptr()->value_.static_value_, kAsReference);
@@ -927,12 +927,12 @@ void RawField::WriteTo(SnapshotWriter* writer,
writer->WriteObjectImpl(ptr()->value_.offset_, kAsReference);
}
// Write out the initializer function or saved initial value.
- if (writer->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
writer->WriteObjectImpl(ptr()->initializer_.precompiled_, kAsReference);
} else {
writer->WriteObjectImpl(ptr()->initializer_.saved_value_, kAsReference);
}
- if (!writer->snapshot_code()) {
+ if (!Snapshot::IncludesCode(kind)) {
// Write out the dependent code.
writer->WriteObjectImpl(ptr()->dependent_code_, kAsReference);
// Write out the guarded list length.
@@ -996,7 +996,7 @@ RawTokenStream* TokenStream::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Read the length so that we can determine number of tokens to read.
intptr_t len = reader->ReadSmiValue();
@@ -1030,7 +1030,7 @@ void RawTokenStream::WriteTo(SnapshotWriter* writer,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(writer != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1058,7 +1058,7 @@ RawScript* Script::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Allocate script object.
Script& script = Script::ZoneHandle(reader->zone(), NEW_OBJECT(Script));
@@ -1079,10 +1079,7 @@ RawScript* Script::ReadFrom(SnapshotReader* reader,
// Set all the object fields.
// TODO(5411462): Need to assert No GC can happen here, even though
// allocations may happen.
- RawObject** toobj = reader->snapshot_code()
- ? script.raw()->to_precompiled_snapshot()
- : script.raw()->to_snapshot();
- intptr_t num_flds = (toobj - script.raw()->from());
+ intptr_t num_flds = (script.raw()->to_snapshot(kind) - script.raw()->from());
for (intptr_t i = 0; i <= num_flds; i++) {
(*reader->PassiveObjectHandle()) = reader->ReadObjectImpl(kAsReference);
script.StorePointer((script.raw()->from() + i),
@@ -1099,7 +1096,7 @@ void RawScript::WriteTo(SnapshotWriter* writer,
bool as_reference) {
ASSERT(writer != NULL);
ASSERT(tokens_ != TokenStream::null());
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1115,9 +1112,7 @@ void RawScript::WriteTo(SnapshotWriter* writer,
// Write out all the object pointer fields.
SnapshotWriterVisitor visitor(writer, kAsReference);
- RawObject** toobj = writer->snapshot_code() ? to_precompiled_snapshot()
- : to_snapshot();
- visitor.VisitPointers(from(), toobj);
+ visitor.VisitPointers(from(), to_snapshot(kind));
}
@@ -1155,7 +1150,7 @@ RawLibrary* Library::ReadFrom(SnapshotReader* reader,
reader->Read<bool>());
library.StoreNonPointer(&library.raw_ptr()->debuggable_,
reader->Read<bool>());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
is_in_fullsnapshot = true;
}
library.StoreNonPointer(&library.raw_ptr()->is_in_fullsnapshot_,
@@ -1175,7 +1170,7 @@ RawLibrary* Library::ReadFrom(SnapshotReader* reader,
}
// Initialize cache of resolved names.
const intptr_t kInitialNameCacheSize = 64;
- if (kind != Snapshot::kFull) {
+ if (!Snapshot::IsFull(kind)) {
// The cache of resolved names in library scope is not serialized.
library.InitResolvedNamesCache(kInitialNameCacheSize);
library.Register();
@@ -1213,7 +1208,7 @@ void RawLibrary::WriteTo(SnapshotWriter* writer,
// Write out library URL so that it can be looked up when reading.
writer->WriteObjectImpl(ptr()->url_, kAsInlinedObject);
} else {
- ASSERT((kind == Snapshot::kFull) || !ptr()->is_in_fullsnapshot_);
+ ASSERT((Snapshot::IsFull(kind)) || !ptr()->is_in_fullsnapshot_);
// Write out all non object fields.
ASSERT(ptr()->index_ != static_cast<classid_t>(-1));
writer->WriteClassIDValue(ptr()->index_);
@@ -1241,7 +1236,7 @@ RawLibraryPrefix* LibraryPrefix::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Allocate library prefix object.
LibraryPrefix& prefix = LibraryPrefix::ZoneHandle(
@@ -1256,13 +1251,13 @@ RawLibraryPrefix* LibraryPrefix::ReadFrom(SnapshotReader* reader,
prefix.StoreNonPointer(&prefix.raw_ptr()->is_loaded_, reader->Read<bool>());
// Set all the object fields.
- RawObject** toobj = reader->snapshot_code()
+ RawObject** toobj = Snapshot::IncludesCode(kind)
? prefix.raw()->to_precompiled_snapshot()
: prefix.raw()->to();
READ_OBJECT_FIELDS(prefix,
prefix.raw()->from(), toobj,
kAsReference);
- if (reader->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
prefix.StorePointer(&prefix.raw_ptr()->imports_,
Array::null());
prefix.StorePointer(&prefix.raw_ptr()->dependent_code_,
@@ -1278,7 +1273,7 @@ void RawLibraryPrefix::WriteTo(SnapshotWriter* writer,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(writer != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1294,8 +1289,8 @@ void RawLibraryPrefix::WriteTo(SnapshotWriter* writer,
// Write out all the object pointer fields.
SnapshotWriterVisitor visitor(writer, kAsReference);
- RawObject** toobj = writer->snapshot_code() ? to_precompiled_snapshot()
- : to();
+ RawObject** toobj = Snapshot::IncludesCode(kind) ? to_precompiled_snapshot()
+ : to();
siva 2016/04/26 22:27:47 Why did you not add a to_snapshot(kind) function f
rmacnak 2016/04/26 23:38:23 Done.
visitor.VisitPointers(from(), toobj);
}
@@ -1306,7 +1301,7 @@ RawNamespace* Namespace::ReadFrom(SnapshotReader* reader,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(reader != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Allocate Namespace object.
Namespace& ns = Namespace::ZoneHandle(
@@ -1325,7 +1320,7 @@ void RawNamespace::WriteTo(SnapshotWriter* writer,
Snapshot::Kind kind,
bool as_reference) {
ASSERT(writer != NULL);
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1358,8 +1353,8 @@ RawCode* Code::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
Code& result = Code::ZoneHandle(reader->zone(), NEW_OBJECT_WITH_LEN(Code, 0));
reader->AddBackRef(object_id, &result, kIsDeserialized);
@@ -1437,8 +1432,8 @@ void RawCode::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
intptr_t pointer_offsets_length =
Code::PtrOffBits::decode(ptr()->state_bits_);
@@ -1500,8 +1495,8 @@ RawObjectPool* ObjectPool::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
intptr_t len = reader->Read<intptr_t>();
ObjectPool* result = NULL;
@@ -1563,8 +1558,8 @@ void RawObjectPool::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
intptr_t tags = writer->GetObjectTags(this);
intptr_t length = ptr()->length_;
@@ -1633,8 +1628,8 @@ RawPcDescriptors* PcDescriptors::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
intptr_t offset = reader->Read<int32_t>();
PcDescriptors& result = PcDescriptors::ZoneHandle(reader->zone());
@@ -1649,8 +1644,8 @@ void RawPcDescriptors::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1666,8 +1661,8 @@ RawCodeSourceMap* CodeSourceMap::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
const int32_t length = reader->Read<int32_t>();
CodeSourceMap& result =
@@ -1690,8 +1685,8 @@ void RawCodeSourceMap::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1711,8 +1706,8 @@ RawStackmap* Stackmap::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
intptr_t offset = reader->Read<int32_t>();
Stackmap& result = Stackmap::ZoneHandle(reader->zone());
@@ -1727,8 +1722,8 @@ void RawStackmap::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1744,8 +1739,8 @@ RawLocalVarDescriptors* LocalVarDescriptors::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
const int32_t num_entries = reader->Read<int32_t>();
@@ -1777,8 +1772,8 @@ void RawLocalVarDescriptors::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1801,8 +1796,8 @@ RawExceptionHandlers* ExceptionHandlers::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
const int32_t num_entries = reader->Read<int32_t>();
ExceptionHandlers& result =
@@ -1832,8 +1827,8 @@ void RawExceptionHandlers::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -1916,7 +1911,7 @@ RawContextScope* ContextScope::ReadFrom(SnapshotReader* reader,
bool is_implicit = reader->Read<bool>();
if (is_implicit) {
ContextScope& context_scope = ContextScope::ZoneHandle();
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
context_scope = reader->NewContextScope(1);
context_scope.set_is_implicit(true);
} else {
@@ -1975,7 +1970,7 @@ RawICData* ICData::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
ICData& result = ICData::ZoneHandle(reader->zone(), NEW_OBJECT(ICData));
reader->AddBackRef(object_id, &result, kIsDeserialized);
@@ -1987,13 +1982,13 @@ RawICData* ICData::ReadFrom(SnapshotReader* reader,
#endif
// Set all the object fields.
- RawObject** toobj = reader->snapshot_code()
+ RawObject** toobj = Snapshot::IncludesCode(kind)
? result.raw()->to_precompiled_snapshot()
: result.raw()->to();
READ_OBJECT_FIELDS(result,
result.raw()->from(), toobj,
kAsReference);
- if (reader->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
result.set_owner(Function::Handle(reader->zone()));
}
@@ -2005,7 +2000,7 @@ void RawICData::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT((kind == Snapshot::kScript) || (kind == Snapshot::kFull));
+ ASSERT((kind == Snapshot::kScript) || (Snapshot::IsFull(kind)));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -2025,8 +2020,8 @@ void RawICData::WriteTo(SnapshotWriter* writer,
// In precompiled snapshots, omit the owner field. The owner field may
// refer to a function which was always inlined and no longer needed.
SnapshotWriterVisitor visitor(writer, kAsReference);
- RawObject** toobj = writer->snapshot_code() ? to_precompiled_snapshot()
- : to();
+ RawObject** toobj = Snapshot::IncludesCode(kind) ? to_precompiled_snapshot()
+ : to();
siva 2016/04/26 22:27:47 Ditto comment about to_snapshot(kind);
rmacnak 2016/04/26 23:38:23 Done.
visitor.VisitPointers(from(), toobj);
}
@@ -2036,8 +2031,8 @@ RawMegamorphicCache* MegamorphicCache::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
MegamorphicCache& result =
MegamorphicCache::ZoneHandle(reader->zone(),
@@ -2059,8 +2054,8 @@ void RawMegamorphicCache::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -2083,8 +2078,8 @@ RawSubtypeTestCache* SubtypeTestCache::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(reader->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
SubtypeTestCache& result =
SubtypeTestCache::ZoneHandle(reader->zone(),
@@ -2106,8 +2101,8 @@ void RawSubtypeTestCache::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
// Write out the serialization header value for this object.
writer->WriteInlinedObjectHeader(object_id);
@@ -2292,7 +2287,7 @@ RawInstance* Instance::ReadFrom(SnapshotReader* reader,
// Create an Instance object or get canonical one if it is a canonical
// constant.
Instance& obj = Instance::ZoneHandle(reader->zone(), Instance::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
obj = reader->NewInstance();
// Set the canonical bit.
if (RawObject::IsCanonical(tags)) {
@@ -2348,7 +2343,7 @@ RawInteger* Mint::ReadFrom(SnapshotReader* reader,
// Create a Mint object or get canonical one if it is a canonical constant.
Mint& mint = Mint::ZoneHandle(reader->zone(), Mint::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
mint = reader->NewMint(value);
// Set the canonical bit.
if (RawObject::IsCanonical(tags)) {
@@ -2410,7 +2405,7 @@ RawBigint* Bigint::ReadFrom(SnapshotReader* reader,
// When reading a script snapshot or a message snapshot we always have
// to canonicalize the object.
if (RawObject::IsCanonical(tags)) {
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
// Set the canonical bit.
obj.SetCanonical();
} else {
@@ -2454,7 +2449,7 @@ RawDouble* Double::ReadFrom(SnapshotReader* reader,
// Create a Double object or get canonical one if it is a canonical constant.
Double& dbl = Double::ZoneHandle(reader->zone(), Double::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
dbl = reader->NewDouble(value);
// Set the canonical bit.
if (RawObject::IsCanonical(tags)) {
@@ -2551,8 +2546,8 @@ RawOneByteString* OneByteString::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- if (reader->snapshot_code()) {
- ASSERT(kind == Snapshot::kFull);
+ if (Snapshot::IncludesCode(kind)) {
+ ASSERT(Snapshot::IsFull(kind));
intptr_t offset = reader->Read<int32_t>();
String& result = String::ZoneHandle(reader->zone());
result ^= reader->GetObjectAt(offset);
@@ -2565,7 +2560,7 @@ RawOneByteString* OneByteString::ReadFrom(SnapshotReader* reader,
intptr_t hash = reader->ReadSmiValue();
String& str_obj = String::ZoneHandle(reader->zone(), String::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
// We currently only expect the Dart mutator to read snapshots.
reader->isolate()->AssertCurrentThreadIsMutator();
ASSERT(Thread::Current()->no_safepoint_scope_depth() != 0);
@@ -2600,7 +2595,7 @@ RawTwoByteString* TwoByteString::ReadFrom(SnapshotReader* reader,
intptr_t hash = reader->ReadSmiValue();
String& str_obj = String::ZoneHandle(reader->zone(), String::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
RawTwoByteString* obj = reader->NewTwoByteString(len);
str_obj = obj;
if (RawObject::IsCanonical(tags)) {
@@ -2666,9 +2661,9 @@ void RawOneByteString::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- if (writer->snapshot_code()) {
- ASSERT(writer->snapshot_code());
- ASSERT(kind == Snapshot::kFull);
+ if (Snapshot::IncludesCode(kind)) {
+ ASSERT(Snapshot::IncludesCode(kind));
+ ASSERT(Snapshot::IsFull(kind));
// Assert that hash is computed.
if (ptr()->hash_ == NULL) {
ptr()->hash_ = Smi::New(String::Hash(ptr()->data(),
@@ -2838,7 +2833,7 @@ RawImmutableArray* ImmutableArray::ReadFrom(SnapshotReader* reader,
// Read all the individual elements for inlined objects.
reader->ArrayReadFrom(object_id, *array, len, tags);
if (RawObject::IsCanonical(tags)) {
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
array->SetCanonical();
} else {
*array ^= array->CheckAndCanonicalize(reader->thread(), NULL);
@@ -2888,7 +2883,7 @@ RawGrowableObjectArray* GrowableObjectArray::ReadFrom(SnapshotReader* reader,
// Read the length so that we can determine instance size to allocate.
GrowableObjectArray& array = GrowableObjectArray::ZoneHandle(
reader->zone(), GrowableObjectArray::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
array = reader->NewGrowableObjectArray();
} else {
array = GrowableObjectArray::New(0, HEAP_SPACE(kind));
@@ -2947,14 +2942,14 @@ RawLinkedHashMap* LinkedHashMap::ReadFrom(SnapshotReader* reader,
LinkedHashMap& map = LinkedHashMap::ZoneHandle(
reader->zone(), LinkedHashMap::null());
- if ((kind == Snapshot::kFull && !reader->snapshot_code()) ||
+ if ((Snapshot::IsFull(kind) && !Snapshot::IncludesCode(kind)) ||
kind == Snapshot::kScript) {
// The immutable maps that seed map literals are not yet VM-internal, so
// we don't reach this.
UNREACHABLE();
} else {
// Since the map might contain itself as a key or value, allocate first.
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
map = reader->NewLinkedHashMap();
} else {
map = LinkedHashMap::NewUninitialized(HEAP_SPACE(kind));
@@ -3006,7 +3001,7 @@ void RawLinkedHashMap::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- if ((kind == Snapshot::kFull && !writer->snapshot_code()) ||
+ if ((Snapshot::IsFull(kind) && !Snapshot::IncludesCode(kind)) ||
kind == Snapshot::kScript) {
// The immutable maps that seed map literals are not yet VM-internal, so
// we don't reach this.
@@ -3069,7 +3064,7 @@ RawFloat32x4* Float32x4::ReadFrom(SnapshotReader* reader,
// Create a Float32x4 object.
Float32x4& simd = Float32x4::ZoneHandle(reader->zone(),
Float32x4::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
simd = reader->NewFloat32x4(value0, value1, value2, value3);
} else {
simd = Float32x4::New(value0, value1, value2, value3, HEAP_SPACE(kind));
@@ -3115,7 +3110,7 @@ RawInt32x4* Int32x4::ReadFrom(SnapshotReader* reader,
// Create a Float32x4 object.
Int32x4& simd = Int32x4::ZoneHandle(reader->zone(), Int32x4::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
simd = reader->NewInt32x4(value0, value1, value2, value3);
} else {
simd = Int32x4::New(value0, value1, value2, value3, HEAP_SPACE(kind));
@@ -3159,7 +3154,7 @@ RawFloat64x2* Float64x2::ReadFrom(SnapshotReader* reader,
// Create a Float64x2 object.
Float64x2& simd = Float64x2::ZoneHandle(reader->zone(),
Float64x2::null());
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
simd = reader->NewFloat64x2(value0, value1);
} else {
simd = Float64x2::New(value0, value1, HEAP_SPACE(kind));
@@ -3204,7 +3199,7 @@ RawTypedData* TypedData::ReadFrom(SnapshotReader* reader,
intptr_t cid = RawObject::ClassIdTag::decode(tags);
intptr_t len = reader->ReadSmiValue();
TypedData& result = TypedData::ZoneHandle(reader->zone(),
- (kind == Snapshot::kFull) ? reader->NewTypedData(cid, len)
+ (Snapshot::IsFull(kind)) ? reader->NewTypedData(cid, len)
: TypedData::New(cid, len, HEAP_SPACE(kind)));
reader->AddBackRef(object_id, &result, kIsDeserialized);
@@ -3253,7 +3248,7 @@ RawTypedData* TypedData::ReadFrom(SnapshotReader* reader,
// When reading a script snapshot or a message snapshot we always have
// to canonicalize the object.
if (RawObject::IsCanonical(tags)) {
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
// Set the canonical bit.
result.SetCanonical();
} else {
@@ -3272,7 +3267,7 @@ RawExternalTypedData* ExternalTypedData::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(kind != Snapshot::kFull);
+ ASSERT(!Snapshot::IsFull(kind));
intptr_t cid = RawObject::ClassIdTag::decode(tags);
intptr_t length = reader->ReadSmiValue();
uint8_t* data = reinterpret_cast<uint8_t*>(reader->ReadRawPointerValue());
@@ -3482,13 +3477,13 @@ RawSendPort* SendPort::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- ASSERT(kind == Snapshot::kMessage || reader->snapshot_code());
+ ASSERT(kind == Snapshot::kMessage || Snapshot::IncludesCode(kind));
uint64_t id = reader->Read<uint64_t>();
uint64_t origin_id = reader->Read<uint64_t>();
SendPort& result = SendPort::ZoneHandle(reader->zone());
- if (reader->snapshot_code()) {
+ if (Snapshot::IncludesCode(kind)) {
// TODO(rmacnak): Reset fields in precompiled snapshots and assert
// this is unreachable.
} else {
@@ -3520,7 +3515,7 @@ RawStacktrace* Stacktrace::ReadFrom(SnapshotReader* reader,
intptr_t tags,
Snapshot::Kind kind,
bool as_reference) {
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
Stacktrace& result = Stacktrace::ZoneHandle(reader->zone(),
reader->NewStacktrace());
reader->AddBackRef(object_id, &result, kIsDeserialized);
@@ -3544,7 +3539,7 @@ void RawStacktrace::WriteTo(SnapshotWriter* writer,
intptr_t object_id,
Snapshot::Kind kind,
bool as_reference) {
- if (kind == Snapshot::kFull) {
+ if (Snapshot::IsFull(kind)) {
ASSERT(writer != NULL);
ASSERT(this == Isolate::Current()->object_store()->
preallocated_stack_trace());

Powered by Google App Engine
This is Rietveld 408576698