Index: vm/raw_object_snapshot.cc |
=================================================================== |
--- vm/raw_object_snapshot.cc (revision 10409) |
+++ vm/raw_object_snapshot.cc (working copy) |
@@ -34,13 +34,14 @@ |
if ((kind == Snapshot::kFull) || |
(kind == Snapshot::kScript && !RawObject::IsCreatedFromSnapshot(tags))) { |
// Read in the base information. |
- ObjectKind object_kind = reader->Read<ObjectKind>(); |
+ intptr_t class_id = reader->ReadIntptrValue(); |
+ bool is_signature_class = reader->Read<bool>(); |
// Allocate class object of specified kind. |
if (kind == Snapshot::kFull) { |
- cls = reader->NewClass(object_kind); |
+ cls = reader->NewClass(class_id, is_signature_class); |
} else { |
- cls = Class::GetClass(object_kind); |
+ cls = Class::GetClass(class_id, is_signature_class); |
} |
reader->AddBackRef(object_id, &cls, kIsDeserialized); |
@@ -87,12 +88,13 @@ |
(kind == Snapshot::kScript && |
!RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this)))) { |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kClassClass); |
+ writer->WriteVMIsolateObject(kClassCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all the non object pointer fields. |
// NOTE: cpp_vtable_ is not written. |
- writer->Write<ObjectKind>(ptr()->instance_kind_); |
+ writer->WriteIntptrValue(ptr()->id_); |
+ writer->Write<bool>(Class::IsSignatureClass(this) ? true : false); |
writer->WriteIntptrValue(ptr()->instance_size_); |
writer->WriteIntptrValue(ptr()->type_arguments_instance_field_offset_); |
writer->WriteIntptrValue(ptr()->next_field_offset_); |
@@ -149,7 +151,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kUnresolvedClassClass); |
+ writer->WriteVMIsolateObject(kUnresolvedClassCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all the non object pointer fields. |
@@ -221,7 +223,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kTypeClass); |
+ writer->WriteVMIsolateObject(kTypeCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all the non object pointer fields. |
@@ -275,7 +277,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kTypeParameterClass); |
+ writer->WriteVMIsolateObject(kTypeParameterCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all the non object pointer fields. |
@@ -347,7 +349,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kTypeArgumentsClass); |
+ writer->WriteVMIsolateObject(kTypeArgumentsCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out the length field. |
@@ -400,7 +402,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kInstantiatedTypeArgumentsClass); |
+ writer->WriteVMIsolateObject(kInstantiatedTypeArgumentsCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all the object pointer fields. |
@@ -461,7 +463,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kFunctionClass); |
+ writer->WriteVMIsolateObject(kFunctionCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all the non object fields. |
@@ -528,7 +530,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kFieldClass); |
+ writer->WriteVMIsolateObject(kFieldCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all the non object fields. |
@@ -581,7 +583,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kLiteralTokenClass); |
+ writer->WriteVMIsolateObject(kLiteralTokenCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out the kind field. |
@@ -637,7 +639,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kTokenStreamClass); |
+ writer->WriteVMIsolateObject(kTokenStreamCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out the length field and the token stream. |
@@ -691,7 +693,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kScriptClass); |
+ writer->WriteVMIsolateObject(kScriptCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all the object pointer fields. |
@@ -763,7 +765,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kLibraryClass); |
+ writer->WriteVMIsolateObject(kLibraryCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
if (RawObject::IsCreatedFromSnapshot(writer->GetObjectTags(this))) { |
@@ -834,7 +836,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kLibraryPrefixClass); |
+ writer->WriteVMIsolateObject(kLibraryPrefixCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out all non object fields. |
@@ -1003,7 +1005,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kContextClass); |
+ writer->WriteVMIsolateObject(kContextCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out num of variables in the context. |
@@ -1055,7 +1057,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteVMIsolateObject(Object::kContextScopeClass); |
+ writer->WriteVMIsolateObject(kContextScopeCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Serialize number of variables. |
@@ -1233,7 +1235,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteIndexedObject(ObjectStore::kMintClass); |
+ writer->WriteIndexedObject(kMintCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out the 64 bit value. |
@@ -1281,7 +1283,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteIndexedObject(ObjectStore::kBigintClass); |
+ writer->WriteIndexedObject(kBigintCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out the bigint value as a HEXCstring. |
@@ -1351,7 +1353,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteIndexedObject(ObjectStore::kDoubleClass); |
+ writer->WriteIndexedObject(kDoubleCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out the double value. |
@@ -1521,7 +1523,7 @@ |
// Write out the string. |
if (len > 0) { |
- if (class_id == ObjectStore::kOneByteStringClass) { |
+ if (class_id == kOneByteStringCid) { |
writer->WriteBytes(reinterpret_cast<const uint8_t*>(data), len); |
} else { |
for (intptr_t i = 0; i < len; i++) { |
@@ -1538,7 +1540,7 @@ |
StringWriteTo(writer, |
object_id, |
kind, |
- ObjectStore::kOneByteStringClass, |
+ kOneByteStringCid, |
writer->GetObjectTags(this), |
ptr()->length_, |
ptr()->hash_, |
@@ -1552,7 +1554,7 @@ |
StringWriteTo(writer, |
object_id, |
kind, |
- ObjectStore::kTwoByteStringClass, |
+ kTwoByteStringCid, |
writer->GetObjectTags(this), |
ptr()->length_, |
ptr()->hash_, |
@@ -1566,7 +1568,7 @@ |
StringWriteTo(writer, |
object_id, |
kind, |
- ObjectStore::kFourByteStringClass, |
+ kFourByteStringCid, |
writer->GetObjectTags(this), |
ptr()->length_, |
ptr()->hash_, |
@@ -1611,7 +1613,7 @@ |
StringWriteTo(writer, |
object_id, |
kind, |
- ObjectStore::kOneByteStringClass, |
+ kOneByteStringCid, |
writer->GetObjectTags(this), |
ptr()->length_, |
ptr()->hash_, |
@@ -1626,7 +1628,7 @@ |
StringWriteTo(writer, |
object_id, |
kind, |
- ObjectStore::kTwoByteStringClass, |
+ kTwoByteStringCid, |
writer->GetObjectTags(this), |
ptr()->length_, |
ptr()->hash_, |
@@ -1641,7 +1643,7 @@ |
StringWriteTo(writer, |
object_id, |
kind, |
- ObjectStore::kFourByteStringClass, |
+ kFourByteStringCid, |
writer->GetObjectTags(this), |
ptr()->length_, |
ptr()->hash_, |
@@ -1709,7 +1711,7 @@ |
intptr_t object_id, |
Snapshot::Kind kind) { |
writer->ArrayWriteTo(object_id, |
- ObjectStore::kArrayClass, |
+ kArrayCid, |
writer->GetObjectTags(this), |
ptr()->length_, |
ptr()->type_arguments_, |
@@ -1721,7 +1723,7 @@ |
intptr_t object_id, |
Snapshot::Kind kind) { |
writer->ArrayWriteTo(object_id, |
- ObjectStore::kImmutableArrayClass, |
+ kImmutableArrayCid, |
writer->GetObjectTags(this), |
ptr()->length_, |
ptr()->type_arguments_, |
@@ -1765,7 +1767,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteIndexedObject(ObjectStore::kGrowableObjectArrayClass); |
+ writer->WriteIndexedObject(kGrowableObjectArrayCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out the used length field. |
@@ -1902,7 +1904,7 @@ |
ByteArrayWriteTo(writer, \ |
object_id, \ |
kind, \ |
- ObjectStore::k##name##ArrayClass, \ |
+ k##name##ArrayCid, \ |
writer->GetObjectTags(this), \ |
ptr()->length_, \ |
reinterpret_cast<uint8_t*>(ptr()->data_)); \ |
@@ -1920,7 +1922,7 @@ |
ByteArrayWriteTo(writer, \ |
object_id, \ |
kind, \ |
- ObjectStore::k##name##ArrayClass, \ |
+ k##name##ArrayCid, \ |
writer->GetObjectTags(this), \ |
ptr()->length_, \ |
reinterpret_cast<uint8_t*>(ptr()->external_data_->data())); \ |
@@ -2006,7 +2008,7 @@ |
writer->WriteInlinedObjectHeader(object_id); |
// Write out the class and tags information. |
- writer->WriteIndexedObject(ObjectStore::kJSRegExpClass); |
+ writer->WriteIndexedObject(kJSRegExpCid); |
writer->WriteIntptrValue(writer->GetObjectTags(this)); |
// Write out the data length field. |