Index: runtime/vm/raw_object_snapshot.cc |
=================================================================== |
--- runtime/vm/raw_object_snapshot.cc (revision 24540) |
+++ runtime/vm/raw_object_snapshot.cc (working copy) |
@@ -2646,4 +2646,42 @@ |
writer->Write<RawObject*>(ptr()->value_); |
} |
+ |
+RawVMReference* VMReference::ReadFrom(SnapshotReader* reader, |
+ intptr_t object_id, |
+ intptr_t tags, |
+ Snapshot::Kind kind) { |
+ ASSERT(reader != NULL); |
+ |
+ // Allocate the weak property object. |
+ VMReference& vm_reference = VMReference::ZoneHandle( |
+ reader->isolate(), VMReference::New(HEAP_SPACE(kind))); |
+ reader->AddBackRef(object_id, &vm_reference, kIsDeserialized); |
+ |
+ // Set the object tags. |
+ vm_reference.set_tags(tags); |
+ |
+ // Set all the object fields. |
+ vm_reference.raw_ptr()->referent_ = reader->ReadObject(); |
siva
2013/06/30 01:12:48
(*reader->ObjectHandle()) = reader->ReadObjectImpl
rmacnak
2013/07/01 18:35:49
Changed
|
+ |
+ return vm_reference.raw(); |
+} |
+ |
+ |
+void RawVMReference::WriteTo(SnapshotWriter* writer, |
+ intptr_t object_id, |
+ Snapshot::Kind kind) { |
+ ASSERT(writer != NULL); |
+ |
+ // Write out the serialization header value for this object. |
+ writer->WriteInlinedObjectHeader(object_id); |
+ |
+ // Write out the class and tags information. |
+ writer->WriteIndexedObject(kVMReferenceCid); |
+ writer->WriteIntptrValue(writer->GetObjectTags(this)); |
+ |
+ // Write out all the other fields. |
+ writer->WriteObject(ptr()->referent_); |
siva
2013/06/30 01:12:48
writer->WriteObjectImpl(ptr()->referent_);
rmacnak
2013/07/01 18:35:49
Changed. Required adding RawVMReference as a frien
|
+} |
siva
2013/06/30 01:12:48
Need to add unit tests in snapshot_test.cc so that
|
+ |
} // namespace dart |