| Index: runtime/vm/snapshot_test.cc
|
| diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc
|
| index fec51a0db35b7ed39d5473956c80e4726fefe83d..aa51a40d39fff4500872b822dd33896e172a3289 100644
|
| --- a/runtime/vm/snapshot_test.cc
|
| +++ b/runtime/vm/snapshot_test.cc
|
| @@ -57,6 +57,11 @@ static uint8_t* malloc_allocator(uint8_t* ptr,
|
| }
|
|
|
|
|
| +static void malloc_deallocator(uint8_t* ptr) {
|
| + free(ptr);
|
| +}
|
| +
|
| +
|
| static uint8_t* zone_allocator(uint8_t* ptr,
|
| intptr_t old_size,
|
| intptr_t new_size) {
|
| @@ -65,6 +70,9 @@ static uint8_t* zone_allocator(uint8_t* ptr,
|
| }
|
|
|
|
|
| +static void zone_deallocator(uint8_t* ptr) {}
|
| +
|
| +
|
| // Compare two Dart_CObject object graphs rooted in first and
|
| // second. The second graph will be destroyed by this operation no matter
|
| // whether the graphs are equal or not.
|
| @@ -159,7 +167,7 @@ TEST_CASE(SerializeNull) {
|
| // Write snapshot with object content.
|
| const Object& null_object = Object::Handle();
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(null_object);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -184,7 +192,7 @@ TEST_CASE(SerializeSmi1) {
|
| // Write snapshot with object content.
|
| const Smi& smi = Smi::Handle(Smi::New(124));
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(smi);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -210,7 +218,7 @@ TEST_CASE(SerializeSmi2) {
|
| // Write snapshot with object content.
|
| const Smi& smi = Smi::Handle(Smi::New(-1));
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(smi);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -233,7 +241,7 @@ TEST_CASE(SerializeSmi2) {
|
| Dart_CObject* SerializeAndDeserializeMint(const Mint& mint) {
|
| // Write snapshot with object content.
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(mint);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -308,7 +316,7 @@ TEST_CASE(SerializeDouble) {
|
| // Write snapshot with object content.
|
| const Double& dbl = Double::Handle(Double::New(101.29));
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(dbl);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -334,7 +342,7 @@ TEST_CASE(SerializeTrue) {
|
| // Write snapshot with true object.
|
| const Bool& bl = Bool::True();
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(bl);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -362,7 +370,7 @@ TEST_CASE(SerializeFalse) {
|
| // Write snapshot with false object.
|
| const Bool& bl = Bool::False();
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(bl);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -386,7 +394,7 @@ TEST_CASE(SerializeCapability) {
|
| // Write snapshot with object content.
|
| const Capability& capability = Capability::Handle(Capability::New(12345));
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(capability);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -416,7 +424,7 @@ TEST_CASE(SerializeBigint) {
|
| Bigint& bigint = Bigint::Handle();
|
| bigint ^= Integer::NewCanonical(str);
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(bigint);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -444,7 +452,7 @@ TEST_CASE(SerializeBigint) {
|
| Dart_CObject* SerializeAndDeserializeBigint(const Bigint& bigint) {
|
| // Write snapshot with object content.
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(bigint);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -497,7 +505,7 @@ TEST_CASE(SerializeBigint2) {
|
| TEST_CASE(SerializeSingletons) {
|
| // Write snapshot with object content.
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &malloc_allocator, true);
|
| + MessageWriter writer(&buffer, &malloc_allocator, &malloc_deallocator, true);
|
| writer.WriteObject(Object::class_class());
|
| writer.WriteObject(Object::type_arguments_class());
|
| writer.WriteObject(Object::function_class());
|
| @@ -539,7 +547,7 @@ static void TestString(const char* cstr) {
|
| // Write snapshot with object content.
|
| String& str = String::Handle(String::New(cstr));
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(str);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -585,7 +593,7 @@ TEST_CASE(SerializeArray) {
|
| array.SetAt(i, smi);
|
| }
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(array);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -667,7 +675,7 @@ TEST_CASE(SerializeEmptyArray) {
|
| const int kArrayLength = 0;
|
| Array& array = Array::Handle(Array::New(kArrayLength));
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(array);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -697,7 +705,7 @@ TEST_CASE(SerializeByteArray) {
|
| typed_data.SetUint8(i, i);
|
| }
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(typed_data);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -731,7 +739,7 @@ TEST_CASE(SerializeByteArray) {
|
| array.Set##darttype((i * scale), i); \
|
| } \
|
| uint8_t* buffer; \
|
| - MessageWriter writer(&buffer, &zone_allocator, true); \
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true); \
|
| writer.WriteMessage(array); \
|
| intptr_t buffer_len = writer.BytesWritten(); \
|
| MessageSnapshotReader reader(buffer, buffer_len, thread); \
|
| @@ -754,7 +762,7 @@ TEST_CASE(SerializeByteArray) {
|
| reinterpret_cast<uint8_t*>(data), length)); \
|
| intptr_t scale = array.ElementSizeInBytes(); \
|
| uint8_t* buffer; \
|
| - MessageWriter writer(&buffer, &zone_allocator, true); \
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true); \
|
| writer.WriteMessage(array); \
|
| intptr_t buffer_len = writer.BytesWritten(); \
|
| MessageSnapshotReader reader(buffer, buffer_len, thread); \
|
| @@ -801,7 +809,7 @@ TEST_CASE(SerializeEmptyByteArray) {
|
| TypedData& typed_data = TypedData::Handle(
|
| TypedData::New(kTypedDataUint8ArrayCid, kTypedDataLength));
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteMessage(typed_data);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -831,6 +839,7 @@ class TestSnapshotWriter : public SnapshotWriter {
|
| Snapshot::kScript,
|
| buffer,
|
| alloc,
|
| + NULL,
|
| kInitialSize,
|
| &forward_list_,
|
| true /* can_send_any_object */),
|
| @@ -1716,7 +1725,7 @@ static uint8_t* GetSerialized(Dart_Handle lib,
|
|
|
| // Serialize the object into a message.
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, false);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, false);
|
| writer.WriteMessage(obj);
|
| *buffer_len = writer.BytesWritten();
|
| return buffer;
|
| @@ -1736,7 +1745,7 @@ static void CheckString(Dart_Handle dart_string, const char* expected) {
|
| String& str = String::Handle();
|
| str ^= Api::UnwrapHandle(dart_string);
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, false);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, false);
|
| writer.WriteMessage(str);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -1756,7 +1765,7 @@ static void CheckStringInvalid(Dart_Handle dart_string) {
|
| String& str = String::Handle();
|
| str ^= Api::UnwrapHandle(dart_string);
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, false);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, false);
|
| writer.WriteMessage(str);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -1867,7 +1876,7 @@ UNIT_TEST_CASE(DartGeneratedMessages) {
|
| Smi& smi = Smi::Handle();
|
| smi ^= Api::UnwrapHandle(smi_result);
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, false);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, false);
|
| writer.WriteMessage(smi);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -1885,7 +1894,7 @@ UNIT_TEST_CASE(DartGeneratedMessages) {
|
| Bigint& bigint = Bigint::Handle();
|
| bigint ^= Api::UnwrapHandle(bigint_result);
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, false);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, false);
|
| writer.WriteMessage(bigint);
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| @@ -2990,7 +2999,7 @@ UNIT_TEST_CASE(PostCObject) {
|
| TEST_CASE(OmittedObjectEncodingLength) {
|
| StackZone zone(Thread::Current());
|
| uint8_t* buffer;
|
| - MessageWriter writer(&buffer, &zone_allocator, true);
|
| + MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true);
|
| writer.WriteInlinedObjectHeader(kOmittedObjectId);
|
| // For performance, we'd like single-byte headers when ids are omitted.
|
| // If this starts failing, consider renumbering the snapshot ids.
|
|
|