| Index: runtime/vm/snapshot_test.cc
|
| diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc
|
| index 9c67df8e791483ed3dc53d21d689c05d6719b417..12934d7eae62d3b8df0af2a6b960fa2666784a90 100644
|
| --- a/runtime/vm/snapshot_test.cc
|
| +++ b/runtime/vm/snapshot_test.cc
|
| @@ -152,7 +152,7 @@ static void ExpectEncodeFail(Dart_CObject* root) {
|
|
|
|
|
| TEST_CASE(SerializeNull) {
|
| - StackZone zone(Thread::Current());
|
| + StackZone zone(thread);
|
|
|
| // Write snapshot with object content.
|
| const Object& null_object = Object::Handle();
|
| @@ -162,10 +162,7 @@ TEST_CASE(SerializeNull) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| const Object& serialized_object = Object::Handle(reader.ReadObject());
|
| EXPECT(Equals(null_object, serialized_object));
|
|
|
| @@ -180,7 +177,7 @@ TEST_CASE(SerializeNull) {
|
|
|
|
|
| TEST_CASE(SerializeSmi1) {
|
| - StackZone zone(Thread::Current());
|
| + StackZone zone(thread);
|
|
|
| // Write snapshot with object content.
|
| const Smi& smi = Smi::Handle(Smi::New(124));
|
| @@ -190,10 +187,7 @@ TEST_CASE(SerializeSmi1) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| const Object& serialized_object = Object::Handle(reader.ReadObject());
|
| EXPECT(Equals(smi, serialized_object));
|
|
|
| @@ -209,7 +203,7 @@ TEST_CASE(SerializeSmi1) {
|
|
|
|
|
| TEST_CASE(SerializeSmi2) {
|
| - StackZone zone(Thread::Current());
|
| + StackZone zone(thread);
|
|
|
| // Write snapshot with object content.
|
| const Smi& smi = Smi::Handle(Smi::New(-1));
|
| @@ -219,10 +213,7 @@ TEST_CASE(SerializeSmi2) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| const Object& serialized_object = Object::Handle(reader.ReadObject());
|
| EXPECT(Equals(smi, serialized_object));
|
|
|
| @@ -246,12 +237,10 @@ Dart_CObject* SerializeAndDeserializeMint(const Mint& mint) {
|
|
|
| {
|
| // Switch to a regular zone, where VM handle allocation is allowed.
|
| - StackZone zone(Thread::Current());
|
| + Thread* thread = Thread::Current();
|
| + StackZone zone(thread);
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - Thread::Current()->zone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| const Object& serialized_object = Object::Handle(reader.ReadObject());
|
| EXPECT(serialized_object.IsMint());
|
| }
|
| @@ -312,7 +301,7 @@ TEST_CASE(SerializeMints) {
|
|
|
|
|
| TEST_CASE(SerializeDouble) {
|
| - StackZone zone(Thread::Current());
|
| + StackZone zone(thread);
|
|
|
| // Write snapshot with object content.
|
| const Double& dbl = Double::Handle(Double::New(101.29));
|
| @@ -322,10 +311,7 @@ TEST_CASE(SerializeDouble) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| const Object& serialized_object = Object::Handle(reader.ReadObject());
|
| EXPECT(Equals(dbl, serialized_object));
|
|
|
| @@ -341,7 +327,7 @@ TEST_CASE(SerializeDouble) {
|
|
|
|
|
| TEST_CASE(SerializeTrue) {
|
| - StackZone zone(Thread::Current());
|
| + StackZone zone(thread);
|
|
|
| // Write snapshot with true object.
|
| const Bool& bl = Bool::True();
|
| @@ -351,10 +337,7 @@ TEST_CASE(SerializeTrue) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| const Object& serialized_object = Object::Handle(reader.ReadObject());
|
| fprintf(stderr, "%s / %s\n", bl.ToCString(), serialized_object.ToCString());
|
|
|
| @@ -372,7 +355,7 @@ TEST_CASE(SerializeTrue) {
|
|
|
|
|
| TEST_CASE(SerializeFalse) {
|
| - StackZone zone(Thread::Current());
|
| + StackZone zone(thread);
|
|
|
| // Write snapshot with false object.
|
| const Bool& bl = Bool::False();
|
| @@ -382,10 +365,7 @@ TEST_CASE(SerializeFalse) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| const Object& serialized_object = Object::Handle(reader.ReadObject());
|
| EXPECT(Equals(bl, serialized_object));
|
|
|
| @@ -406,8 +386,6 @@ static uword allocator(intptr_t size) {
|
|
|
|
|
| TEST_CASE(SerializeCapability) {
|
| - StackZone zone(Thread::Current());
|
| -
|
| // Write snapshot with object content.
|
| const Capability& capability = Capability::Handle(Capability::New(12345));
|
| uint8_t* buffer;
|
| @@ -416,10 +394,7 @@ TEST_CASE(SerializeCapability) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| Capability& obj = Capability::Handle();
|
| obj ^= reader.ReadObject();
|
|
|
| @@ -438,8 +413,6 @@ TEST_CASE(SerializeCapability) {
|
|
|
|
|
| TEST_CASE(SerializeBigint) {
|
| - StackZone zone(Thread::Current());
|
| -
|
| // Write snapshot with object content.
|
| const char* cstr = "0x270FFFFFFFFFFFFFD8F0";
|
| const String& str = String::Handle(String::New(cstr));
|
| @@ -451,10 +424,7 @@ TEST_CASE(SerializeBigint) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| Bigint& obj = Bigint::Handle();
|
| obj ^= reader.ReadObject();
|
|
|
| @@ -482,12 +452,10 @@ Dart_CObject* SerializeAndDeserializeBigint(const Bigint& bigint) {
|
|
|
| {
|
| // Switch to a regular zone, where VM handle allocation is allowed.
|
| - StackZone zone(Thread::Current());
|
| + Thread* thread = Thread::Current();
|
| + StackZone zone(thread);
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - Thread::Current()->zone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| Bigint& serialized_bigint = Bigint::Handle();
|
| serialized_bigint ^= reader.ReadObject();
|
| const char* str1 = bigint.ToHexCString(allocator);
|
| @@ -550,10 +518,7 @@ TEST_CASE(SerializeSingletons) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - Thread::Current()->zone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| EXPECT(Object::class_class() == reader.ReadObject());
|
| EXPECT(Object::type_arguments_class() == reader.ReadObject());
|
| EXPECT(Object::function_class() == reader.ReadObject());
|
| @@ -573,7 +538,7 @@ TEST_CASE(SerializeSingletons) {
|
|
|
|
|
| static void TestString(const char* cstr) {
|
| - StackZone zone(Thread::Current());
|
| + Thread* thread = Thread::Current();
|
| EXPECT(Utf8::IsValid(reinterpret_cast<const uint8_t*>(cstr), strlen(cstr)));
|
| // Write snapshot with object content.
|
| String& str = String::Handle(String::New(cstr));
|
| @@ -583,10 +548,7 @@ static void TestString(const char* cstr) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| String& serialized_str = String::Handle();
|
| serialized_str ^= reader.ReadObject();
|
| EXPECT(str.Equals(serialized_str));
|
| @@ -617,8 +579,6 @@ TEST_CASE(SerializeString) {
|
|
|
|
|
| TEST_CASE(SerializeArray) {
|
| - StackZone zone(Thread::Current());
|
| -
|
| // Write snapshot with object content.
|
| const int kArrayLength = 10;
|
| Array& array = Array::Handle(Array::New(kArrayLength));
|
| @@ -633,10 +593,7 @@ TEST_CASE(SerializeArray) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| Array& serialized_array = Array::Handle();
|
| serialized_array ^= reader.ReadObject();
|
| EXPECT(array.CanonicalizeEquals(serialized_array));
|
| @@ -709,8 +666,6 @@ TEST_CASE(FailSerializeLargeExternalTypedData) {
|
|
|
|
|
| TEST_CASE(SerializeEmptyArray) {
|
| - StackZone zone(Thread::Current());
|
| -
|
| // Write snapshot with object content.
|
| const int kArrayLength = 0;
|
| Array& array = Array::Handle(Array::New(kArrayLength));
|
| @@ -720,10 +675,7 @@ TEST_CASE(SerializeEmptyArray) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| Array& serialized_array = Array::Handle();
|
| serialized_array ^= reader.ReadObject();
|
| EXPECT(array.CanonicalizeEquals(serialized_array));
|
| @@ -740,8 +692,6 @@ TEST_CASE(SerializeEmptyArray) {
|
|
|
|
|
| TEST_CASE(SerializeByteArray) {
|
| - StackZone zone(Thread::Current());
|
| -
|
| // Write snapshot with object content.
|
| const int kTypedDataLength = 256;
|
| TypedData& typed_data = TypedData::Handle(
|
| @@ -755,10 +705,7 @@ TEST_CASE(SerializeByteArray) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| TypedData& serialized_typed_data = TypedData::Handle();
|
| serialized_typed_data ^= reader.ReadObject();
|
| EXPECT(serialized_typed_data.IsTypedData());
|
| @@ -776,54 +723,50 @@ TEST_CASE(SerializeByteArray) {
|
| }
|
|
|
|
|
| -#define TEST_TYPED_ARRAY(darttype, ctype) \
|
| - { \
|
| - StackZone zone(Thread::Current()); \
|
| - const int kArrayLength = 127; \
|
| - TypedData& array = TypedData::Handle( \
|
| - TypedData::New(kTypedData##darttype##ArrayCid, kArrayLength)); \
|
| - intptr_t scale = array.ElementSizeInBytes(); \
|
| - for (int i = 0; i < kArrayLength; i++) { \
|
| - array.Set##darttype((i * scale), i); \
|
| - } \
|
| - uint8_t* buffer; \
|
| - MessageWriter writer(&buffer, &zone_allocator, true); \
|
| - writer.WriteMessage(array); \
|
| - intptr_t buffer_len = writer.BytesWritten(); \
|
| - MessageSnapshotReader reader(buffer, buffer_len, \
|
| - Isolate::Current(), \
|
| - zone.GetZone()); \
|
| - TypedData& serialized_array = TypedData::Handle(); \
|
| - serialized_array ^= reader.ReadObject(); \
|
| - for (int i = 0; i < kArrayLength; i++) { \
|
| - EXPECT_EQ(static_cast<ctype>(i), \
|
| - serialized_array.Get##darttype(i*scale)); \
|
| - } \
|
| +#define TEST_TYPED_ARRAY(darttype, ctype) \
|
| + { \
|
| + StackZone zone(thread); \
|
| + const int kArrayLength = 127; \
|
| + TypedData& array = TypedData::Handle( \
|
| + TypedData::New(kTypedData##darttype##ArrayCid, kArrayLength)); \
|
| + intptr_t scale = array.ElementSizeInBytes(); \
|
| + for (int i = 0; i < kArrayLength; i++) { \
|
| + array.Set##darttype((i * scale), i); \
|
| + } \
|
| + uint8_t* buffer; \
|
| + MessageWriter writer(&buffer, &zone_allocator, true); \
|
| + writer.WriteMessage(array); \
|
| + intptr_t buffer_len = writer.BytesWritten(); \
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread); \
|
| + TypedData& serialized_array = TypedData::Handle(); \
|
| + serialized_array ^= reader.ReadObject(); \
|
| + for (int i = 0; i < kArrayLength; i++) { \
|
| + EXPECT_EQ(static_cast<ctype>(i), \
|
| + serialized_array.Get##darttype(i*scale)); \
|
| + } \
|
| }
|
|
|
|
|
| -#define TEST_EXTERNAL_TYPED_ARRAY(darttype, ctype) \
|
| - { \
|
| - StackZone zone(Thread::Current()); \
|
| - ctype data[] = { 0, 11, 22, 33, 44, 55, 66, 77 }; \
|
| - intptr_t length = ARRAY_SIZE(data); \
|
| - ExternalTypedData& array = ExternalTypedData::Handle( \
|
| - ExternalTypedData::New(kExternalTypedData##darttype##ArrayCid, \
|
| - reinterpret_cast<uint8_t*>(data), length)); \
|
| - intptr_t scale = array.ElementSizeInBytes(); \
|
| - uint8_t* buffer; \
|
| - MessageWriter writer(&buffer, &zone_allocator, true); \
|
| - writer.WriteMessage(array); \
|
| - intptr_t buffer_len = writer.BytesWritten(); \
|
| - MessageSnapshotReader reader(buffer, buffer_len, \
|
| - Isolate::Current(), \
|
| - zone.GetZone()); \
|
| - TypedData& serialized_array = TypedData::Handle(); \
|
| - serialized_array ^= reader.ReadObject(); \
|
| - for (int i = 0; i < length; i++) { \
|
| - EXPECT_EQ(static_cast<ctype>(data[i]), \
|
| - serialized_array.Get##darttype(i*scale)); \
|
| - } \
|
| +#define TEST_EXTERNAL_TYPED_ARRAY(darttype, ctype) \
|
| + { \
|
| + StackZone zone(thread); \
|
| + ctype data[] = { 0, 11, 22, 33, 44, 55, 66, 77 }; \
|
| + intptr_t length = ARRAY_SIZE(data); \
|
| + ExternalTypedData& array = ExternalTypedData::Handle( \
|
| + ExternalTypedData::New(kExternalTypedData##darttype##ArrayCid, \
|
| + reinterpret_cast<uint8_t*>(data), length)); \
|
| + intptr_t scale = array.ElementSizeInBytes(); \
|
| + uint8_t* buffer; \
|
| + MessageWriter writer(&buffer, &zone_allocator, true); \
|
| + writer.WriteMessage(array); \
|
| + intptr_t buffer_len = writer.BytesWritten(); \
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread); \
|
| + TypedData& serialized_array = TypedData::Handle(); \
|
| + serialized_array ^= reader.ReadObject(); \
|
| + for (int i = 0; i < length; i++) { \
|
| + EXPECT_EQ(static_cast<ctype>(data[i]), \
|
| + serialized_array.Get##darttype(i*scale)); \
|
| + } \
|
| }
|
|
|
|
|
| @@ -856,8 +799,6 @@ TEST_CASE(SerializeExternalTypedArray) {
|
|
|
|
|
| TEST_CASE(SerializeEmptyByteArray) {
|
| - StackZone zone(Thread::Current());
|
| -
|
| // Write snapshot with object content.
|
| const int kTypedDataLength = 0;
|
| TypedData& typed_data = TypedData::Handle(
|
| @@ -868,10 +809,7 @@ TEST_CASE(SerializeEmptyByteArray) {
|
| intptr_t buffer_len = writer.BytesWritten();
|
|
|
| // Read object back from the snapshot.
|
| - MessageSnapshotReader reader(buffer,
|
| - buffer_len,
|
| - Isolate::Current(),
|
| - zone.GetZone());
|
| + MessageSnapshotReader reader(buffer, buffer_len, thread);
|
| TypedData& serialized_typed_data = TypedData::Handle();
|
| serialized_typed_data ^= reader.ReadObject();
|
| EXPECT(serialized_typed_data.IsTypedData());
|
| @@ -1010,11 +948,8 @@ TEST_CASE(SerializeScript) {
|
| writer.WriteScript(script);
|
|
|
| // Read object back from the snapshot.
|
| - ScriptSnapshotReader reader(buffer,
|
| - writer.BytesWritten(),
|
| - Isolate::Current(),
|
| - Thread::Current()->zone());
|
| - Script& serialized_script = Script::Handle();
|
| + ScriptSnapshotReader reader(buffer, writer.BytesWritten(), thread);
|
| + Script& serialized_script = Script::Handle(thread->zone());
|
| serialized_script ^= reader.ReadObject();
|
|
|
| // Check if the serialized script object matches the original script.
|
| @@ -1233,7 +1168,7 @@ UNIT_TEST_CASE(FullSnapshot) {
|
|
|
| Isolate* isolate = Isolate::Current();
|
| StackZone zone(isolate);
|
| - HandleScope scope(isolate);
|
| + HandleScope scope(Thread::Current());
|
|
|
| // Create a test library and Load up a test script in it.
|
| TestCase::LoadTestScript(kScriptChars, NULL);
|
| @@ -1292,7 +1227,7 @@ UNIT_TEST_CASE(FullSnapshot1) {
|
|
|
| Isolate* isolate = Isolate::Current();
|
| StackZone zone(isolate);
|
| - HandleScope scope(isolate);
|
| + HandleScope scope(Thread::Current());
|
|
|
| // Create a test library and Load up a test script in it.
|
| Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
|
| @@ -1897,7 +1832,7 @@ UNIT_TEST_CASE(DartGeneratedMessages) {
|
| EXPECT(Dart_IsString(crappy_string_result));
|
|
|
| {
|
| - DARTSCOPE(isolate);
|
| + DARTSCOPE(Thread::Current());
|
|
|
| {
|
| StackZone zone(Thread::Current());
|
| @@ -1989,7 +1924,7 @@ UNIT_TEST_CASE(DartGeneratedListMessages) {
|
| EXPECT_VALID(lib);
|
|
|
| {
|
| - DARTSCOPE(isolate);
|
| + DARTSCOPE(Thread::Current());
|
| StackZone zone(isolate);
|
| intptr_t buf_len = 0;
|
| {
|
| @@ -2113,7 +2048,7 @@ UNIT_TEST_CASE(DartGeneratedArrayLiteralMessages) {
|
| EXPECT_VALID(lib);
|
|
|
| {
|
| - DARTSCOPE(isolate);
|
| + DARTSCOPE(Thread::Current());
|
| StackZone zone(isolate);
|
| intptr_t buf_len = 0;
|
| {
|
| @@ -2352,7 +2287,7 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) {
|
| EXPECT_VALID(lib);
|
|
|
| {
|
| - DARTSCOPE(isolate);
|
| + DARTSCOPE(Thread::Current());
|
| StackZone zone(isolate);
|
| intptr_t buf_len = 0;
|
| {
|
| @@ -2577,7 +2512,7 @@ UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) {
|
| EXPECT_VALID(lib);
|
|
|
| {
|
| - DARTSCOPE(isolate);
|
| + DARTSCOPE(Thread::Current());
|
| StackZone zone(isolate);
|
| intptr_t buf_len = 0;
|
| {
|
| @@ -2818,7 +2753,7 @@ UNIT_TEST_CASE(DartGeneratedListMessagesWithTypedData) {
|
| EXPECT_VALID(lib);
|
|
|
| {
|
| - DARTSCOPE(isolate);
|
| + DARTSCOPE(Thread::Current());
|
| StackZone zone(isolate);
|
| intptr_t buf_len = 0;
|
| {
|
|
|