Index: runtime/vm/snapshot_test.cc |
=================================================================== |
--- runtime/vm/snapshot_test.cc (revision 45789) |
+++ runtime/vm/snapshot_test.cc (working copy) |
@@ -157,8 +157,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
const Object& serialized_object = Object::Handle(reader.ReadObject()); |
EXPECT(Equals(null_object, serialized_object)); |
@@ -183,8 +185,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
const Object& serialized_object = Object::Handle(reader.ReadObject()); |
EXPECT(Equals(smi, serialized_object)); |
@@ -210,8 +214,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
const Object& serialized_object = Object::Handle(reader.ReadObject()); |
EXPECT(Equals(smi, serialized_object)); |
@@ -234,9 +240,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), |
- Thread::Current()->zone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ Thread::Current()->zone()); |
const Object& serialized_object = Object::Handle(reader.ReadObject()); |
EXPECT(serialized_object.IsMint()); |
@@ -306,8 +313,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
const Object& serialized_object = Object::Handle(reader.ReadObject()); |
EXPECT(Equals(dbl, serialized_object)); |
@@ -333,8 +342,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
const Object& serialized_object = Object::Handle(reader.ReadObject()); |
fprintf(stderr, "%s / %s\n", bl.ToCString(), serialized_object.ToCString()); |
@@ -362,8 +373,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
const Object& serialized_object = Object::Handle(reader.ReadObject()); |
EXPECT(Equals(bl, serialized_object)); |
@@ -397,8 +410,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
Bigint& obj = Bigint::Handle(); |
obj ^= reader.ReadObject(); |
@@ -425,9 +440,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), |
- Thread::Current()->zone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ Thread::Current()->zone()); |
Bigint& serialized_bigint = Bigint::Handle(); |
serialized_bigint ^= reader.ReadObject(); |
const char* str1 = bigint.ToHexCString(allocator); |
@@ -490,8 +506,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, Snapshot::kMessage, |
- Isolate::Current(), Thread::Current()->zone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ Thread::Current()->zone()); |
EXPECT(Object::class_class() == reader.ReadObject()); |
EXPECT(Object::type_arguments_class() == reader.ReadObject()); |
EXPECT(Object::function_class() == reader.ReadObject()); |
@@ -521,8 +539,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
String& serialized_str = String::Handle(); |
serialized_str ^= reader.ReadObject(); |
EXPECT(str.Equals(serialized_str)); |
@@ -569,8 +589,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
Array& serialized_array = Array::Handle(); |
serialized_array ^= reader.ReadObject(); |
EXPECT(array.CanonicalizeEquals(serialized_array)); |
@@ -654,8 +676,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
Array& serialized_array = Array::Handle(); |
serialized_array ^= reader.ReadObject(); |
EXPECT(array.CanonicalizeEquals(serialized_array)); |
@@ -687,8 +711,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
TypedData& serialized_typed_data = TypedData::Handle(); |
serialized_typed_data ^= reader.ReadObject(); |
EXPECT(serialized_typed_data.IsTypedData()); |
@@ -720,8 +746,8 @@ |
} \ |
writer.WriteMessage(array); \ |
intptr_t buffer_len = writer.BytesWritten(); \ |
- SnapshotReader reader(buffer, buffer_len, \ |
- Snapshot::kMessage, Isolate::Current(), \ |
+ MessageSnapshotReader reader(buffer, buffer_len, \ |
+ Isolate::Current(), \ |
zone.GetZone()); \ |
TypedData& serialized_array = TypedData::Handle(); \ |
serialized_array ^= reader.ReadObject(); \ |
@@ -745,8 +771,8 @@ |
MessageWriter writer(&buffer, &zone_allocator, true); \ |
writer.WriteMessage(array); \ |
intptr_t buffer_len = writer.BytesWritten(); \ |
- SnapshotReader reader(buffer, buffer_len, \ |
- Snapshot::kMessage, Isolate::Current(), \ |
+ MessageSnapshotReader reader(buffer, buffer_len, \ |
+ Isolate::Current(), \ |
zone.GetZone()); \ |
TypedData& serialized_array = TypedData::Handle(); \ |
serialized_array ^= reader.ReadObject(); \ |
@@ -798,8 +824,10 @@ |
intptr_t buffer_len = writer.BytesWritten(); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, buffer_len, |
- Snapshot::kMessage, Isolate::Current(), zone.GetZone()); |
+ MessageSnapshotReader reader(buffer, |
+ buffer_len, |
+ Isolate::Current(), |
+ zone.GetZone()); |
TypedData& serialized_typed_data = TypedData::Handle(); |
serialized_typed_data ^= reader.ReadObject(); |
EXPECT(serialized_typed_data.IsTypedData()); |
@@ -820,7 +848,13 @@ |
public: |
static const intptr_t kInitialSize = 64 * KB; |
TestSnapshotWriter(uint8_t** buffer, ReAlloc alloc) |
- : SnapshotWriter(Snapshot::kScript, buffer, alloc, kInitialSize, true) { |
+ : SnapshotWriter(Snapshot::kScript, |
+ buffer, |
+ alloc, |
+ kInitialSize, |
+ &forward_list_, |
+ true), |
+ forward_list_(SnapshotWriter::FirstObjectId()) { |
ASSERT(buffer != NULL); |
ASSERT(alloc != NULL); |
} |
@@ -833,6 +867,8 @@ |
} |
private: |
+ ForwardList forward_list_; |
+ |
DISALLOW_COPY_AND_ASSIGN(TestSnapshotWriter); |
}; |
@@ -929,9 +965,10 @@ |
writer.WriteScript(script); |
// Read object back from the snapshot. |
- SnapshotReader reader(buffer, writer.BytesWritten(), |
- Snapshot::kScript, Isolate::Current(), |
- Thread::Current()->zone()); |
+ ScriptSnapshotReader reader(buffer, |
+ writer.BytesWritten(), |
+ Isolate::Current(), |
+ Thread::Current()->zone()); |
Script& serialized_script = Script::Handle(); |
serialized_script ^= reader.ReadObject(); |
@@ -1029,7 +1066,6 @@ |
"}\n"; |
Dart_Handle result; |
- uint8_t* vm_isolate_snapshot_buffer; |
uint8_t* isolate_snapshot_buffer; |
// Start an Isolate, load a script and create a full snapshot. |
@@ -1049,7 +1085,7 @@ |
OS::PrintErr("Without Snapshot: %" Pd64 "us\n", timer1.TotalElapsedTime()); |
// Write snapshot with object content. |
- FullSnapshotWriter writer(&vm_isolate_snapshot_buffer, |
+ FullSnapshotWriter writer(NULL, |
&isolate_snapshot_buffer, |
&malloc_allocator); |
writer.WriteFullSnapshot(); |
@@ -1086,7 +1122,6 @@ |
}; |
const char* kScriptChars = kFullSnapshotScriptChars; |
- uint8_t* vm_isolate_snapshot_buffer; |
uint8_t* isolate_snapshot_buffer; |
// Start an Isolate, load a script and create a full snapshot. |
@@ -1106,7 +1141,7 @@ |
OS::PrintErr("Without Snapshot: %" Pd64 "us\n", timer1.TotalElapsedTime()); |
// Write snapshot with object content. |
- FullSnapshotWriter writer(&vm_isolate_snapshot_buffer, |
+ FullSnapshotWriter writer(NULL, |
&isolate_snapshot_buffer, |
&malloc_allocator); |
writer.WriteFullSnapshot(); |
@@ -1189,7 +1224,6 @@ |
uint8_t* buffer; |
intptr_t size; |
- uint8_t* vm_isolate_snapshot = NULL; |
intptr_t vm_isolate_snapshot_size; |
uint8_t* isolate_snapshot = NULL; |
intptr_t isolate_snapshot_size; |
@@ -1204,7 +1238,7 @@ |
Dart_EnterScope(); // Start a Dart API scope for invoking API functions. |
// Write out the script snapshot. |
- result = Dart_CreateSnapshot(&vm_isolate_snapshot, |
+ result = Dart_CreateSnapshot(NULL, |
&vm_isolate_snapshot_size, |
&isolate_snapshot, |
&isolate_snapshot_size); |
@@ -1288,7 +1322,6 @@ |
Dart_Handle result; |
uint8_t* buffer; |
intptr_t size; |
- uint8_t* vm_isolate_snapshot = NULL; |
intptr_t vm_isolate_snapshot_size; |
uint8_t* isolate_snapshot = NULL; |
intptr_t isolate_snapshot_size; |
@@ -1301,7 +1334,7 @@ |
Dart_EnterScope(); // Start a Dart API scope for invoking API functions. |
// Write out the script snapshot. |
- result = Dart_CreateSnapshot(&vm_isolate_snapshot, |
+ result = Dart_CreateSnapshot(NULL, |
&vm_isolate_snapshot_size, |
&isolate_snapshot, |
&isolate_snapshot_size); |
@@ -1372,7 +1405,6 @@ |
uint8_t* buffer; |
intptr_t size; |
- uint8_t* vm_isolate_snapshot = NULL; |
intptr_t vm_isolate_snapshot_size; |
uint8_t* isolate_snapshot = NULL; |
intptr_t isolate_snapshot_size; |
@@ -1389,7 +1421,7 @@ |
Dart_EnterScope(); // Start a Dart API scope for invoking API functions. |
// Write out the script snapshot. |
- result = Dart_CreateSnapshot(&vm_isolate_snapshot, |
+ result = Dart_CreateSnapshot(NULL, |
&vm_isolate_snapshot_size, |
&isolate_snapshot, |
&isolate_snapshot_size); |
@@ -1472,7 +1504,10 @@ |
// Read object back from the snapshot into a C structure. |
ApiNativeScope scope; |
- ApiMessageReader api_reader(buffer, writer.BytesWritten(), &zone_allocator); |
+ ApiMessageReader api_reader(buffer, |
+ writer.BytesWritten(), |
+ &zone_allocator, |
+ false); |
Dart_CObject* root = api_reader.ReadMessage(); |
EXPECT_EQ(Dart_CObject_kArray, root->type); |
EXPECT_EQ(kArrayLength, root->value.as_array.length); |