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

Unified Diff: runtime/vm/snapshot_test.cc

Issue 9159066: Allocate a Dart_CMessage structure when decoding a message into C structures (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Addressed review comments from asiva@ Created 8 years, 11 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
« no previous file with comments | « runtime/vm/snapshot.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/snapshot_test.cc
diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc
index 2cd08d5c5a0cef93b80028c67c40a412e122b59b..bb8fe8f453b77df7d54c81a3a0224886e960173a 100644
--- a/runtime/vm/snapshot_test.cc
+++ b/runtime/vm/snapshot_test.cc
@@ -38,15 +38,34 @@ static bool Equals(const Object& expected, const Object& actual) {
}
-static uint8_t* allocator(uint8_t* ptr, intptr_t old_size, intptr_t new_size) {
+static uint8_t* malloc_allocator(
+ uint8_t* ptr, intptr_t old_size, intptr_t new_size) {
return reinterpret_cast<uint8_t*>(realloc(ptr, new_size));
}
+static uint8_t* zone_allocator(
+ uint8_t* ptr, intptr_t old_size, intptr_t new_size) {
+ Zone* zone = Isolate::Current()->current_zone();
+ return reinterpret_cast<uint8_t*>(
+ zone->Reallocate(reinterpret_cast<uword>(ptr), old_size, new_size));
+}
+
+
+static Dart_CMessage* DecodeMessage(uint8_t* message,
+ intptr_t length,
+ ReAlloc allocator) {
+ CMessageReader message_reader(message, length, allocator);
+ return message_reader.ReadMessage();
+}
+
+
TEST_CASE(SerializeNull) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const Object& null_object = Object::Handle();
writer.WriteObject(null_object.raw());
writer.FinalizeBuffer();
@@ -60,20 +79,21 @@ TEST_CASE(SerializeNull) {
EXPECT(Equals(null_object, serialized_object));
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject = mreader.ReadObject();
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
EXPECT_NOTNULL(cobject);
EXPECT_EQ(Dart_CObject::kNull, cobject->type);
- free(cobject);
}
TEST_CASE(SerializeSmi1) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const Smi& smi = Smi::Handle(Smi::New(124));
writer.WriteObject(smi.raw());
writer.FinalizeBuffer();
@@ -87,21 +107,22 @@ TEST_CASE(SerializeSmi1) {
EXPECT(Equals(smi, serialized_object));
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject = mreader.ReadObject();
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
EXPECT_NOTNULL(cobject);
EXPECT_EQ(Dart_CObject::kInt32, cobject->type);
EXPECT_EQ(smi.Value(), cobject->value.as_int32);
- free(cobject);
}
TEST_CASE(SerializeSmi2) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const Smi& smi = Smi::Handle(Smi::New(-1));
writer.WriteObject(smi.raw());
writer.FinalizeBuffer();
@@ -115,21 +136,22 @@ TEST_CASE(SerializeSmi2) {
EXPECT(Equals(smi, serialized_object));
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject = mreader.ReadObject();
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
EXPECT_NOTNULL(cobject);
EXPECT_EQ(Dart_CObject::kInt32, cobject->type);
EXPECT_EQ(smi.Value(), cobject->value.as_int32);
- free(cobject);
}
TEST_CASE(SerializeDouble) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const Double& dbl = Double::Handle(Double::New(101.29));
writer.WriteObject(dbl.raw());
writer.FinalizeBuffer();
@@ -143,21 +165,22 @@ TEST_CASE(SerializeDouble) {
EXPECT(Equals(dbl, serialized_object));
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject = mreader.ReadObject();
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
EXPECT_NOTNULL(cobject);
EXPECT_EQ(Dart_CObject::kDouble, cobject->type);
EXPECT_EQ(dbl.value(), cobject->value.as_double);
- free(cobject);
}
TEST_CASE(SerializeBool) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const Bool& bool1 = Bool::Handle(Bool::True());
const Bool& bool2 = Bool::Handle(Bool::False());
writer.WriteObject(bool1.raw());
@@ -171,28 +194,63 @@ TEST_CASE(SerializeBool) {
SnapshotReader reader(snapshot, Isolate::Current());
EXPECT(Bool::True() == reader.ReadObject());
EXPECT(Bool::False() == reader.ReadObject());
+}
+
+
+TEST_CASE(SerializeTrue) {
+ Zone zone(Isolate::Current());
+
+ // Write snapshot with true object.
+ uint8_t* buffer;
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
+ const Bool& bl = Bool::Handle(Bool::True());
+ writer.WriteObject(bl.raw());
+ writer.FinalizeBuffer();
+
+ // Create a snapshot object using the buffer.
+ Snapshot::SetupFromBuffer(buffer);
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject1 = mreader.ReadObject();
- EXPECT_NOTNULL(cobject1);
- EXPECT_EQ(Dart_CObject::kBool, cobject1->type);
- EXPECT_EQ(true, cobject1->value.as_bool);
- Dart_CObject* cobject2 = mreader.ReadObject();
- EXPECT_NOTNULL(cobject2);
- EXPECT_EQ(Dart_CObject::kBool, cobject2->type);
- EXPECT_EQ(false, cobject2->value.as_bool);
- free(cobject1);
- free(cobject2);
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
+ EXPECT_NOTNULL(cobject);
+ EXPECT_EQ(Dart_CObject::kBool, cobject->type);
+ EXPECT_EQ(true, cobject->value.as_bool);
+}
+
+
+TEST_CASE(SerializeFalse) {
+ Zone zone(Isolate::Current());
+
+ // Write snapshot with false object.
+ uint8_t* buffer;
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
+ const Bool& bl = Bool::Handle(Bool::False());
+ writer.WriteObject(bl.raw());
+ writer.FinalizeBuffer();
+
+ // Create a snapshot object using the buffer.
+ Snapshot::SetupFromBuffer(buffer);
+
+ // Read object back from the snapshot into a C structure.
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
+ EXPECT_NOTNULL(cobject);
+ EXPECT_EQ(Dart_CObject::kBool, cobject->type);
+ EXPECT_EQ(false, cobject->value.as_bool);
}
TEST_CASE(SerializeBigint) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const Bigint& bigint = Bigint::Handle(Bigint::New(0xfffffffffLL));
writer.WriteObject(bigint.raw());
writer.FinalizeBuffer();
@@ -208,10 +266,10 @@ TEST_CASE(SerializeBigint) {
EXPECT_EQ(BigintOperations::ToInt64(bigint), BigintOperations::ToInt64(obj));
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject = mreader.ReadObject();
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
// Bigint not supported.
EXPECT(cobject == NULL);
}
@@ -220,7 +278,7 @@ TEST_CASE(SerializeBigint) {
TEST_CASE(SerializeSingletons) {
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &malloc_allocator);
writer.WriteObject(Object::class_class());
writer.WriteObject(Object::null_class());
writer.WriteObject(Object::type_class());
@@ -266,13 +324,17 @@ TEST_CASE(SerializeSingletons) {
EXPECT(Object::exception_handlers_class() == reader.ReadObject());
EXPECT(Object::context_class() == reader.ReadObject());
EXPECT(Object::context_scope_class() == reader.ReadObject());
+
+ free(buffer);
}
TEST_CASE(SerializeString) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
static const char* cstr = "This string shall be serialized";
String& str = String::Handle(String::New(cstr));
writer.WriteObject(str.raw());
@@ -288,20 +350,21 @@ TEST_CASE(SerializeString) {
EXPECT(str.Equals(serialized_str));
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject = mreader.ReadObject();
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
EXPECT_EQ(Dart_CObject::kString, cobject->type);
EXPECT_STREQ(cstr, cobject->value.as_string);
- free(cobject);
}
TEST_CASE(SerializeArray) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const int kArrayLength = 10;
Array& array = Array::Handle(Array::New(kArrayLength));
Smi& smi = Smi::Handle();
@@ -322,26 +385,26 @@ TEST_CASE(SerializeArray) {
EXPECT(array.Equals(serialized_array));
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject = mreader.ReadObject();
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
EXPECT_EQ(Dart_CObject::kArray, cobject->type);
EXPECT_EQ(kArrayLength, cobject->value.as_array.length);
for (int i = 0; i < kArrayLength; i++) {
Dart_CObject* element = cobject->value.as_array.values[i];
EXPECT_EQ(Dart_CObject::kInt32, element->type);
EXPECT_EQ(i, element->value.as_int32);
- free(element);
}
- free(cobject);
}
TEST_CASE(SerializeEmptyArray) {
+ Zone zone(Isolate::Current());
+
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const int kArrayLength = 0;
Array& array = Array::Handle(Array::New(kArrayLength));
writer.WriteObject(array.raw());
@@ -357,14 +420,13 @@ TEST_CASE(SerializeEmptyArray) {
EXPECT(array.Equals(serialized_array));
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* cobject = mreader.ReadObject();
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
EXPECT_EQ(Dart_CObject::kArray, cobject->type);
EXPECT_EQ(kArrayLength, cobject->value.as_array.length);
EXPECT(cobject->value.as_array.values == NULL);
- free(cobject);
}
@@ -385,7 +447,7 @@ TEST_CASE(SerializeScript) {
// Write snapshot with object content.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kScript, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kScript, &buffer, &malloc_allocator);
writer.WriteObject(script.raw());
writer.FinalizeBuffer();
@@ -415,6 +477,8 @@ TEST_CASE(SerializeScript) {
actual_literal ^= serialized_tokens.LiteralAt(i);
EXPECT(expected_literal.Equals(actual_literal));
}
+
+ free(buffer);
}
@@ -454,7 +518,7 @@ UNIT_TEST_CASE(FullSnapshot) {
Isolate* isolate = Isolate::Current();
Zone zone(isolate);
HandleScope scope(isolate);
- SnapshotWriter writer(Snapshot::kFull, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kFull, &buffer, &malloc_allocator);
writer.WriteFullSnapshot();
}
@@ -510,7 +574,7 @@ UNIT_TEST_CASE(FullSnapshot1) {
OS::PrintErr("Without Snapshot: %dus\n", timer1.TotalElapsedTime());
// Write snapshot with object content.
- SnapshotWriter writer(Snapshot::kFull, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kFull, &buffer, &malloc_allocator);
writer.WriteFullSnapshot();
// Invoke a function which returns an object.
@@ -674,8 +738,9 @@ UNIT_TEST_CASE(ScriptSnapshot) {
TEST_CASE(IntArrayMessage) {
+ Zone zone(Isolate::Current());
uint8_t* buffer = NULL;
- MessageWriter writer(&buffer, &allocator);
+ MessageWriter writer(&buffer, &zone_allocator);
static const int kArrayLength = 2;
intptr_t data[kArrayLength] = {1, 2};
@@ -683,26 +748,24 @@ TEST_CASE(IntArrayMessage) {
writer.WriteMessage(len, data);
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* value = mreader.ReadObject();
- EXPECT_EQ(Dart_CObject::kArray, value->type);
- EXPECT_EQ(kArrayLength, value->value.as_array.length);
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
+ EXPECT_EQ(Dart_CObject::kArray, cobject->type);
+ EXPECT_EQ(kArrayLength, cobject->value.as_array.length);
for (int i = 0; i < kArrayLength; i++) {
- Dart_CObject* element = value->value.as_array.values[i];
+ Dart_CObject* element = cobject->value.as_array.values[i];
EXPECT_EQ(Dart_CObject::kInt32, element->type);
EXPECT_EQ(i + 1, element->value.as_int32);
- free(element);
}
- free(value);
}
// Helper function to call a top level Dart function, serialize the
// result and deserialize the result into a Dart_CObject structure.
-static Dart_CObject* GetDeserializedDartObject(Dart_Handle lib,
- const char* dart_function) {
+static Dart_CMessage* GetDeserializedDartMessage(Dart_Handle lib,
+ const char* dart_function) {
Dart_Handle result;
result = Dart_InvokeStatic(lib,
Dart_NewString(""),
@@ -713,18 +776,16 @@ static Dart_CObject* GetDeserializedDartObject(Dart_Handle lib,
// Serialize the list into a message.
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
const Object& list = Object::Handle(Api::UnwrapHandle(result));
writer.WriteObject(list.raw());
writer.FinalizeBuffer();
// Read object back from the snapshot into a C structure.
- CMessageReader reader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* value = reader.ReadObject();
- free(buffer);
- return value;
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ return cmessage;
}
@@ -768,42 +829,40 @@ UNIT_TEST_CASE(DartGeneratedMessages) {
DARTSCOPE_NOCHECKS(isolate);
{
+ Zone zone(Isolate::Current());
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
Smi& smi = Smi::Handle();
smi ^= Api::UnwrapHandle(smi_result);
writer.WriteObject(smi.raw());
writer.FinalizeBuffer();
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* value = mreader.ReadObject();
- EXPECT_NOTNULL(value);
- EXPECT_EQ(Dart_CObject::kInt32, value->type);
- EXPECT_EQ(42, value->value.as_int32);
- free(value);
- free(buffer);
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
+ EXPECT_NOTNULL(cobject);
+ EXPECT_EQ(Dart_CObject::kInt32, cobject->type);
+ EXPECT_EQ(42, cobject->value.as_int32);
}
{
+ Zone zone(Isolate::Current());
uint8_t* buffer;
- SnapshotWriter writer(Snapshot::kMessage, &buffer, &allocator);
+ SnapshotWriter writer(Snapshot::kMessage, &buffer, &zone_allocator);
String& str = String::Handle();
str ^= Api::UnwrapHandle(string_result);
writer.WriteObject(str.raw());
writer.FinalizeBuffer();
// Read object back from the snapshot into a C structure.
- CMessageReader mreader(buffer + Snapshot::kHeaderSize,
- writer.BytesWritten(),
- &allocator);
- Dart_CObject* value = mreader.ReadObject();
- EXPECT_NOTNULL(value);
- EXPECT_EQ(Dart_CObject::kString, value->type);
- EXPECT_STREQ("Hello, world!", value->value.as_string);
- free(value);
- free(buffer);
+ Dart_CMessage* cmessage = DecodeMessage(buffer + Snapshot::kHeaderSize,
+ writer.BytesWritten(),
+ &zone_allocator);
+ Dart_CObject* cobject = cmessage->root;
+ EXPECT_NOTNULL(cobject);
+ EXPECT_EQ(Dart_CObject::kString, cobject->type);
+ EXPECT_STREQ("Hello, world!", cobject->value.as_string);
}
}
Dart_ExitScope();
@@ -850,32 +909,35 @@ UNIT_TEST_CASE(DartGeneratedListMessages) {
{
// Generate a list of nulls from Dart code.
- Dart_CObject* value = GetDeserializedDartObject(lib, "getList");
+ Zone zone(Isolate::Current());
+ Dart_CMessage* cmessage = GetDeserializedDartMessage(lib, "getList");
+ Dart_CObject* value = cmessage->root;
EXPECT_NOTNULL(value);
EXPECT_EQ(Dart_CObject::kArray, value->type);
EXPECT_EQ(kArrayLength, value->value.as_array.length);
for (int i = 0; i < kArrayLength; i++) {
EXPECT_EQ(Dart_CObject::kNull, value->value.as_array.values[i]->type);
- free(value->value.as_array.values[i]);
}
- free(value);
}
{
// Generate a list of ints from Dart code.
- Dart_CObject* value = GetDeserializedDartObject(lib, "getIntList");
+ Zone zone(Isolate::Current());
+ Dart_CMessage* cmessage = GetDeserializedDartMessage(lib, "getIntList");
+ Dart_CObject* value = cmessage->root;
EXPECT_NOTNULL(value);
EXPECT_EQ(Dart_CObject::kArray, value->type);
EXPECT_EQ(kArrayLength, value->value.as_array.length);
for (int i = 0; i < kArrayLength; i++) {
EXPECT_EQ(Dart_CObject::kInt32, value->value.as_array.values[i]->type);
EXPECT_EQ(i, value->value.as_array.values[i]->value.as_int32);
- free(value->value.as_array.values[i]);
}
- free(value);
}
{
// Generate a list of strings from Dart code.
- Dart_CObject* value = GetDeserializedDartObject(lib, "getStringList");
+ Zone zone(Isolate::Current());
+ Dart_CMessage* cmessage =
+ GetDeserializedDartMessage(lib, "getStringList");
+ Dart_CObject* value = cmessage->root;
EXPECT_NOTNULL(value);
EXPECT_EQ(Dart_CObject::kArray, value->type);
EXPECT_EQ(kArrayLength, value->value.as_array.length);
@@ -884,13 +946,13 @@ UNIT_TEST_CASE(DartGeneratedListMessages) {
char buffer[3];
snprintf(buffer, sizeof(buffer), "%d", i);
EXPECT_STREQ(buffer, value->value.as_array.values[i]->value.as_string);
- free(value->value.as_array.values[i]);
}
- free(value);
}
{
// Generate a list of objects of different types from Dart code.
- Dart_CObject* value = GetDeserializedDartObject(lib, "getMixedList");
+ Zone zone(Isolate::Current());
+ Dart_CMessage* cmessage = GetDeserializedDartMessage(lib, "getMixedList");
+ Dart_CObject* value = cmessage->root;
EXPECT_NOTNULL(value);
EXPECT_EQ(Dart_CObject::kArray, value->type);
EXPECT_EQ(kArrayLength, value->value.as_array.length);
@@ -908,9 +970,7 @@ UNIT_TEST_CASE(DartGeneratedListMessages) {
if (i > 3) {
EXPECT_EQ(Dart_CObject::kNull, value->value.as_array.values[i]->type);
}
- free(value->value.as_array.values[i]);
}
- free(value);
}
}
Dart_ExitScope();
@@ -962,7 +1022,10 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) {
{
// Generate a list of strings from Dart code.
- Dart_CObject* object = GetDeserializedDartObject(lib, "getStringList");
+ Zone zone(Isolate::Current());
+ Dart_CMessage* cmessage =
+ GetDeserializedDartMessage(lib, "getStringList");
+ Dart_CObject* object = cmessage->root;
EXPECT_NOTNULL(object);
EXPECT_EQ(Dart_CObject::kArray, object->type);
EXPECT_EQ(kArrayLength, object->value.as_array.length);
@@ -972,12 +1035,13 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) {
EXPECT_EQ(Dart_CObject::kString, element->type);
EXPECT_STREQ("Hello, world!", element->value.as_string);
}
- free(object->value.as_array.values[0]);
- free(object);
}
{
// Generate a list of doubles from Dart code.
- Dart_CObject* object = GetDeserializedDartObject(lib, "getDoubleList");
+ Zone zone(Isolate::Current());
+ Dart_CMessage* cmessage =
+ GetDeserializedDartMessage(lib, "getDoubleList");
+ Dart_CObject* object = cmessage->root;
EXPECT_NOTNULL(object);
EXPECT_EQ(Dart_CObject::kArray, object->type);
EXPECT_EQ(kArrayLength, object->value.as_array.length);
@@ -987,12 +1051,12 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) {
EXPECT_EQ(Dart_CObject::kDouble, element->type);
EXPECT_EQ(3.14, element->value.as_double);
}
- free(object->value.as_array.values[0]);
- free(object);
}
{
// Generate a list of objects of different types from Dart code.
- Dart_CObject* object = GetDeserializedDartObject(lib, "getMixedList");
+ Zone zone(Isolate::Current());
+ Dart_CMessage* cmessage = GetDeserializedDartMessage(lib, "getMixedList");
+ Dart_CObject* object = cmessage->root;
EXPECT_NOTNULL(object);
EXPECT_EQ(Dart_CObject::kArray, object->type);
EXPECT_EQ(kArrayLength, object->value.as_array.length);
@@ -1008,13 +1072,13 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) {
EXPECT_STREQ(2.72, element->value.as_double);
}
}
- free(object->value.as_array.values[0]);
- free(object->value.as_array.values[1]);
- free(object);
}
{
// Generate a list of objects of different types from Dart code.
- Dart_CObject* object = GetDeserializedDartObject(lib, "getSelfRefList");
+ Zone zone(Isolate::Current());
+ Dart_CMessage* cmessage =
+ GetDeserializedDartMessage(lib, "getSelfRefList");
+ Dart_CObject* object = cmessage->root;
EXPECT_NOTNULL(object);
EXPECT_EQ(Dart_CObject::kArray, object->type);
EXPECT_EQ(kArrayLength, object->value.as_array.length);
@@ -1023,7 +1087,6 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) {
EXPECT_EQ(Dart_CObject::kArray, element->type);
EXPECT_EQ(object, element);
}
- free(object);
}
}
Dart_ExitScope();
« no previous file with comments | « runtime/vm/snapshot.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698