OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "include/dart_debugger_api.h" | 5 #include "include/dart_debugger_api.h" |
6 #include "platform/assert.h" | 6 #include "platform/assert.h" |
7 #include "vm/bigint_operations.h" | 7 #include "vm/bigint_operations.h" |
8 #include "vm/class_finalizer.h" | 8 #include "vm/class_finalizer.h" |
9 #include "vm/dart_api_impl.h" | 9 #include "vm/dart_api_impl.h" |
10 #include "vm/dart_api_message.h" | 10 #include "vm/dart_api_message.h" |
(...skipping 21 matching lines...) Expand all Loading... |
32 Double& dbl1 = Double::Handle(); | 32 Double& dbl1 = Double::Handle(); |
33 Double& dbl2 = Double::Handle(); | 33 Double& dbl2 = Double::Handle(); |
34 dbl1 ^= expected.raw(); | 34 dbl1 ^= expected.raw(); |
35 dbl2 ^= actual.raw(); | 35 dbl2 ^= actual.raw(); |
36 return dbl1.value() == dbl2.value(); | 36 return dbl1.value() == dbl2.value(); |
37 } | 37 } |
38 return false; | 38 return false; |
39 } | 39 } |
40 if (expected.IsBool()) { | 40 if (expected.IsBool()) { |
41 if (actual.IsBool()) { | 41 if (actual.IsBool()) { |
42 Bool& bl1 = Bool::Handle(); | 42 return expected.raw() == actual.raw(); |
43 Bool& bl2 = Bool::Handle(); | |
44 bl1 ^= expected.raw(); | |
45 bl2 ^= actual.raw(); | |
46 return bl1.value() == bl2.value(); | |
47 } | 43 } |
48 return false; | 44 return false; |
49 } | 45 } |
50 return false; | 46 return false; |
51 } | 47 } |
52 | 48 |
53 | 49 |
54 static uint8_t* malloc_allocator( | 50 static uint8_t* malloc_allocator( |
55 uint8_t* ptr, intptr_t old_size, intptr_t new_size) { | 51 uint8_t* ptr, intptr_t old_size, intptr_t new_size) { |
56 return reinterpret_cast<uint8_t*>(realloc(ptr, new_size)); | 52 return reinterpret_cast<uint8_t*>(realloc(ptr, new_size)); |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 CheckEncodeDecodeMessage(root); | 301 CheckEncodeDecodeMessage(root); |
306 } | 302 } |
307 | 303 |
308 | 304 |
309 TEST_CASE(SerializeTrue) { | 305 TEST_CASE(SerializeTrue) { |
310 StackZone zone(Isolate::Current()); | 306 StackZone zone(Isolate::Current()); |
311 | 307 |
312 // Write snapshot with true object. | 308 // Write snapshot with true object. |
313 uint8_t* buffer; | 309 uint8_t* buffer; |
314 MessageWriter writer(&buffer, &zone_allocator); | 310 MessageWriter writer(&buffer, &zone_allocator); |
315 const Bool& bl = Bool::Handle(Bool::True()); | 311 const Bool& bl = Bool::True(); |
316 writer.WriteMessage(bl); | 312 writer.WriteMessage(bl); |
317 intptr_t buffer_len = writer.BytesWritten(); | 313 intptr_t buffer_len = writer.BytesWritten(); |
318 | 314 |
319 // Read object back from the snapshot. | 315 // Read object back from the snapshot. |
320 SnapshotReader reader(buffer, buffer_len, | 316 SnapshotReader reader(buffer, buffer_len, |
321 Snapshot::kMessage, Isolate::Current()); | 317 Snapshot::kMessage, Isolate::Current()); |
322 const Object& serialized_object = Object::Handle(reader.ReadObject()); | 318 const Object& serialized_object = Object::Handle(reader.ReadObject()); |
323 fprintf(stderr, "%s / %s\n", bl.ToCString(), serialized_object.ToCString()); | 319 fprintf(stderr, "%s / %s\n", bl.ToCString(), serialized_object.ToCString()); |
324 | 320 |
325 EXPECT(Equals(bl, serialized_object)); | 321 EXPECT(Equals(bl, serialized_object)); |
326 | 322 |
327 // Read object back from the snapshot into a C structure. | 323 // Read object back from the snapshot into a C structure. |
328 ApiNativeScope scope; | 324 ApiNativeScope scope; |
329 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); | 325 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); |
330 Dart_CObject* root = api_reader.ReadMessage(); | 326 Dart_CObject* root = api_reader.ReadMessage(); |
331 EXPECT_NOTNULL(root); | 327 EXPECT_NOTNULL(root); |
332 EXPECT_EQ(Dart_CObject::kBool, root->type); | 328 EXPECT_EQ(Dart_CObject::kBool, root->type); |
333 EXPECT_EQ(true, root->value.as_bool); | 329 EXPECT_EQ(true, root->value.as_bool); |
334 CheckEncodeDecodeMessage(root); | 330 CheckEncodeDecodeMessage(root); |
335 } | 331 } |
336 | 332 |
337 | 333 |
338 TEST_CASE(SerializeFalse) { | 334 TEST_CASE(SerializeFalse) { |
339 StackZone zone(Isolate::Current()); | 335 StackZone zone(Isolate::Current()); |
340 | 336 |
341 // Write snapshot with false object. | 337 // Write snapshot with false object. |
342 uint8_t* buffer; | 338 uint8_t* buffer; |
343 MessageWriter writer(&buffer, &zone_allocator); | 339 MessageWriter writer(&buffer, &zone_allocator); |
344 const Bool& bl = Bool::Handle(Bool::False()); | 340 const Bool& bl = Bool::False(); |
345 writer.WriteMessage(bl); | 341 writer.WriteMessage(bl); |
346 intptr_t buffer_len = writer.BytesWritten(); | 342 intptr_t buffer_len = writer.BytesWritten(); |
347 | 343 |
348 // Read object back from the snapshot. | 344 // Read object back from the snapshot. |
349 SnapshotReader reader(buffer, buffer_len, | 345 SnapshotReader reader(buffer, buffer_len, |
350 Snapshot::kMessage, Isolate::Current()); | 346 Snapshot::kMessage, Isolate::Current()); |
351 const Object& serialized_object = Object::Handle(reader.ReadObject()); | 347 const Object& serialized_object = Object::Handle(reader.ReadObject()); |
352 EXPECT(Equals(bl, serialized_object)); | 348 EXPECT(Equals(bl, serialized_object)); |
353 | 349 |
354 // Read object back from the snapshot into a C structure. | 350 // Read object back from the snapshot into a C structure. |
(...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1253 const Object& list = Object::Handle(Api::UnwrapHandle(result)); | 1249 const Object& list = Object::Handle(Api::UnwrapHandle(result)); |
1254 writer.WriteMessage(list); | 1250 writer.WriteMessage(list); |
1255 intptr_t buffer_len = writer.BytesWritten(); | 1251 intptr_t buffer_len = writer.BytesWritten(); |
1256 | 1252 |
1257 // Read object back from the snapshot into a C structure. | 1253 // Read object back from the snapshot into a C structure. |
1258 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); | 1254 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); |
1259 return api_reader.ReadMessage(); | 1255 return api_reader.ReadMessage(); |
1260 } | 1256 } |
1261 | 1257 |
1262 | 1258 |
1263 static void CheckString(Dart_Handle string, const char* expected) { | 1259 static void CheckString(Dart_Handle dart_string, const char* expected) { |
1264 StackZone zone(Isolate::Current()); | 1260 StackZone zone(Isolate::Current()); |
1265 uint8_t* buffer; | 1261 uint8_t* buffer; |
1266 MessageWriter writer(&buffer, &zone_allocator); | 1262 MessageWriter writer(&buffer, &zone_allocator); |
1267 String& str = String::Handle(); | 1263 String& str = String::Handle(); |
1268 str ^= Api::UnwrapHandle(string); | 1264 str ^= Api::UnwrapHandle(dart_string); |
1269 writer.WriteMessage(str); | 1265 writer.WriteMessage(str); |
1270 intptr_t buffer_len = writer.BytesWritten(); | 1266 intptr_t buffer_len = writer.BytesWritten(); |
1271 | 1267 |
1272 // Read object back from the snapshot into a C structure. | 1268 // Read object back from the snapshot into a C structure. |
1273 ApiNativeScope scope; | 1269 ApiNativeScope scope; |
1274 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); | 1270 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); |
1275 Dart_CObject* root = api_reader.ReadMessage(); | 1271 Dart_CObject* root = api_reader.ReadMessage(); |
1276 EXPECT_NOTNULL(root); | 1272 EXPECT_NOTNULL(root); |
1277 EXPECT_EQ(Dart_CObject::kString, root->type); | 1273 EXPECT_EQ(Dart_CObject::kString, root->type); |
1278 EXPECT_STREQ(expected, root->value.as_string); | 1274 EXPECT_STREQ(expected, root->value.as_string); |
1279 CheckEncodeDecodeMessage(root); | 1275 CheckEncodeDecodeMessage(root); |
1280 } | 1276 } |
1281 | 1277 |
1282 | 1278 |
1283 static void CheckStringInvalid(Dart_Handle string) { | 1279 static void CheckStringInvalid(Dart_Handle dart_string) { |
1284 StackZone zone(Isolate::Current()); | 1280 StackZone zone(Isolate::Current()); |
1285 uint8_t* buffer; | 1281 uint8_t* buffer; |
1286 MessageWriter writer(&buffer, &zone_allocator); | 1282 MessageWriter writer(&buffer, &zone_allocator); |
1287 String& str = String::Handle(); | 1283 String& str = String::Handle(); |
1288 str ^= Api::UnwrapHandle(string); | 1284 str ^= Api::UnwrapHandle(dart_string); |
1289 writer.WriteMessage(str); | 1285 writer.WriteMessage(str); |
1290 intptr_t buffer_len = writer.BytesWritten(); | 1286 intptr_t buffer_len = writer.BytesWritten(); |
1291 | 1287 |
1292 // Read object back from the snapshot into a C structure. | 1288 // Read object back from the snapshot into a C structure. |
1293 ApiNativeScope scope; | 1289 ApiNativeScope scope; |
1294 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); | 1290 ApiMessageReader api_reader(buffer, buffer_len, &zone_allocator); |
1295 Dart_CObject* root = api_reader.ReadMessage(); | 1291 Dart_CObject* root = api_reader.ReadMessage(); |
1296 EXPECT_NOTNULL(root); | 1292 EXPECT_NOTNULL(root); |
1297 EXPECT_EQ(Dart_CObject::kUnsupported, root->type); | 1293 EXPECT_EQ(Dart_CObject::kUnsupported, root->type); |
1298 } | 1294 } |
(...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2200 EXPECT(Dart_ErrorHasException(result)); | 2196 EXPECT(Dart_ErrorHasException(result)); |
2201 EXPECT_SUBSTRING("Exception: nulltruefalse123456æøå3.14[]100123456789\n", | 2197 EXPECT_SUBSTRING("Exception: nulltruefalse123456æøå3.14[]100123456789\n", |
2202 Dart_GetError(result)); | 2198 Dart_GetError(result)); |
2203 | 2199 |
2204 Dart_ExitScope(); | 2200 Dart_ExitScope(); |
2205 } | 2201 } |
2206 | 2202 |
2207 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 2203 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
2208 | 2204 |
2209 } // namespace dart | 2205 } // namespace dart |
OLD | NEW |