| 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 "platform/globals.h" | 5 #include "platform/globals.h" |
| 6 | 6 |
| 7 #include "include/dart_tools_api.h" | 7 #include "include/dart_tools_api.h" |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "vm/class_finalizer.h" | 9 #include "vm/class_finalizer.h" |
| 10 #include "vm/clustered_snapshot.h" | 10 #include "vm/clustered_snapshot.h" |
| (...skipping 1837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1848 | 1848 |
| 1849 // Read object back from the snapshot into a C structure. | 1849 // Read object back from the snapshot into a C structure. |
| 1850 ApiNativeScope scope; | 1850 ApiNativeScope scope; |
| 1851 ApiMessageReader api_reader(buffer, buffer_len); | 1851 ApiMessageReader api_reader(buffer, buffer_len); |
| 1852 Dart_CObject* root = api_reader.ReadMessage(); | 1852 Dart_CObject* root = api_reader.ReadMessage(); |
| 1853 EXPECT_NOTNULL(root); | 1853 EXPECT_NOTNULL(root); |
| 1854 EXPECT_EQ(Dart_CObject_kUnsupported, root->type); | 1854 EXPECT_EQ(Dart_CObject_kUnsupported, root->type); |
| 1855 } | 1855 } |
| 1856 | 1856 |
| 1857 VM_UNIT_TEST_CASE(DartGeneratedMessages) { | 1857 VM_UNIT_TEST_CASE(DartGeneratedMessages) { |
| 1858 static const char* kCustomIsolateScriptChars = | 1858 static const char* kCustomIsolateScriptCommonChars = |
| 1859 "getSmi() {\n" | 1859 "getSmi() {\n" |
| 1860 " return 42;\n" | 1860 " return 42;\n" |
| 1861 "}\n" | 1861 "}\n" |
| 1862 "getBigint() {\n" | |
| 1863 " return -0x424242424242424242424242424242424242;\n" | |
| 1864 "}\n" | |
| 1865 "getAsciiString() {\n" | 1862 "getAsciiString() {\n" |
| 1866 " return \"Hello, world!\";\n" | 1863 " return \"Hello, world!\";\n" |
| 1867 "}\n" | 1864 "}\n" |
| 1868 "getNonAsciiString() {\n" | 1865 "getNonAsciiString() {\n" |
| 1869 " return \"Blåbærgrød\";\n" | 1866 " return \"Blåbærgrød\";\n" |
| 1870 "}\n" | 1867 "}\n" |
| 1871 "getNonBMPString() {\n" | 1868 "getNonBMPString() {\n" |
| 1872 " return \"\\u{10000}\\u{1F601}\\u{1F637}\\u{20000}\";\n" | 1869 " return \"\\u{10000}\\u{1F601}\\u{1F637}\\u{20000}\";\n" |
| 1873 "}\n" | 1870 "}\n" |
| 1874 "getLeadSurrogateString() {\n" | 1871 "getLeadSurrogateString() {\n" |
| 1875 " return new String.fromCharCodes([0xd800]);\n" | 1872 " return new String.fromCharCodes([0xd800]);\n" |
| 1876 "}\n" | 1873 "}\n" |
| 1877 "getTrailSurrogateString() {\n" | 1874 "getTrailSurrogateString() {\n" |
| 1878 " return \"\\u{10000}\".substring(1);\n" | 1875 " return \"\\u{10000}\".substring(1);\n" |
| 1879 "}\n" | 1876 "}\n" |
| 1880 "getSurrogatesString() {\n" | 1877 "getSurrogatesString() {\n" |
| 1881 " return new String.fromCharCodes([0xdc00, 0xdc00, 0xd800, 0xd800]);\n" | 1878 " return new String.fromCharCodes([0xdc00, 0xdc00, 0xd800, 0xd800]);\n" |
| 1882 "}\n" | 1879 "}\n" |
| 1883 "getCrappyString() {\n" | 1880 "getCrappyString() {\n" |
| 1884 " return new String.fromCharCodes([0xd800, 32, 0xdc00, 32]);\n" | 1881 " return new String.fromCharCodes([0xd800, 32, 0xdc00, 32]);\n" |
| 1885 "}\n" | 1882 "}\n" |
| 1886 "getList() {\n" | 1883 "getList() {\n" |
| 1887 " return new List(kArrayLength);\n" | 1884 " return new List(kArrayLength);\n" |
| 1888 "}\n"; | 1885 "}\n"; |
| 1886 static const char* kCustomIsolateScriptBigintChars = |
| 1887 "getBigint() {\n" |
| 1888 " return -0x424242424242424242424242424242424242;\n" |
| 1889 "}\n"; |
| 1889 | 1890 |
| 1890 TestCase::CreateTestIsolate(); | 1891 TestCase::CreateTestIsolate(); |
| 1891 Isolate* isolate = Isolate::Current(); | 1892 Isolate* isolate = Isolate::Current(); |
| 1892 EXPECT(isolate != NULL); | 1893 EXPECT(isolate != NULL); |
| 1893 Dart_EnterScope(); | 1894 Dart_EnterScope(); |
| 1894 | 1895 |
| 1895 Dart_Handle lib = TestCase::LoadTestScript(kCustomIsolateScriptChars, NULL); | 1896 const char* scriptChars = kCustomIsolateScriptCommonChars; |
| 1897 if (!Bigint::IsDisabled()) { |
| 1898 scriptChars = OS::SCreate(Thread::Current()->zone(), "%s%s", scriptChars, |
| 1899 kCustomIsolateScriptBigintChars); |
| 1900 } |
| 1901 |
| 1902 Dart_Handle lib = TestCase::LoadTestScript(scriptChars, NULL); |
| 1896 EXPECT_VALID(lib); | 1903 EXPECT_VALID(lib); |
| 1897 Dart_Handle smi_result; | 1904 Dart_Handle smi_result; |
| 1898 smi_result = Dart_Invoke(lib, NewString("getSmi"), 0, NULL); | 1905 smi_result = Dart_Invoke(lib, NewString("getSmi"), 0, NULL); |
| 1899 EXPECT_VALID(smi_result); | 1906 EXPECT_VALID(smi_result); |
| 1900 Dart_Handle bigint_result; | 1907 |
| 1901 bigint_result = Dart_Invoke(lib, NewString("getBigint"), 0, NULL); | 1908 Dart_Handle bigint_result = NULL; |
| 1902 EXPECT_VALID(bigint_result); | 1909 if (!Bigint::IsDisabled()) { |
| 1910 bigint_result = Dart_Invoke(lib, NewString("getBigint"), 0, NULL); |
| 1911 EXPECT_VALID(bigint_result); |
| 1912 } |
| 1903 | 1913 |
| 1904 Dart_Handle ascii_string_result; | 1914 Dart_Handle ascii_string_result; |
| 1905 ascii_string_result = Dart_Invoke(lib, NewString("getAsciiString"), 0, NULL); | 1915 ascii_string_result = Dart_Invoke(lib, NewString("getAsciiString"), 0, NULL); |
| 1906 EXPECT_VALID(ascii_string_result); | 1916 EXPECT_VALID(ascii_string_result); |
| 1907 EXPECT(Dart_IsString(ascii_string_result)); | 1917 EXPECT(Dart_IsString(ascii_string_result)); |
| 1908 | 1918 |
| 1909 Dart_Handle non_ascii_string_result; | 1919 Dart_Handle non_ascii_string_result; |
| 1910 non_ascii_string_result = | 1920 non_ascii_string_result = |
| 1911 Dart_Invoke(lib, NewString("getNonAsciiString"), 0, NULL); | 1921 Dart_Invoke(lib, NewString("getNonAsciiString"), 0, NULL); |
| 1912 EXPECT_VALID(non_ascii_string_result); | 1922 EXPECT_VALID(non_ascii_string_result); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1958 | 1968 |
| 1959 // Read object back from the snapshot into a C structure. | 1969 // Read object back from the snapshot into a C structure. |
| 1960 ApiNativeScope scope; | 1970 ApiNativeScope scope; |
| 1961 ApiMessageReader api_reader(buffer, buffer_len); | 1971 ApiMessageReader api_reader(buffer, buffer_len); |
| 1962 Dart_CObject* root = api_reader.ReadMessage(); | 1972 Dart_CObject* root = api_reader.ReadMessage(); |
| 1963 EXPECT_NOTNULL(root); | 1973 EXPECT_NOTNULL(root); |
| 1964 EXPECT_EQ(Dart_CObject_kInt32, root->type); | 1974 EXPECT_EQ(Dart_CObject_kInt32, root->type); |
| 1965 EXPECT_EQ(42, root->value.as_int32); | 1975 EXPECT_EQ(42, root->value.as_int32); |
| 1966 CheckEncodeDecodeMessage(root); | 1976 CheckEncodeDecodeMessage(root); |
| 1967 } | 1977 } |
| 1968 { | 1978 if (!Bigint::IsDisabled()) { |
| 1969 StackZone zone(thread); | 1979 StackZone zone(thread); |
| 1970 Bigint& bigint = Bigint::Handle(); | 1980 Bigint& bigint = Bigint::Handle(); |
| 1971 bigint ^= Api::UnwrapHandle(bigint_result); | 1981 bigint ^= Api::UnwrapHandle(bigint_result); |
| 1972 uint8_t* buffer; | 1982 uint8_t* buffer; |
| 1973 MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, false); | 1983 MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, false); |
| 1974 writer.WriteMessage(bigint); | 1984 writer.WriteMessage(bigint); |
| 1975 intptr_t buffer_len = writer.BytesWritten(); | 1985 intptr_t buffer_len = writer.BytesWritten(); |
| 1976 | 1986 |
| 1977 // Read object back from the snapshot into a C structure. | 1987 // Read object back from the snapshot into a C structure. |
| 1978 ApiNativeScope scope; | 1988 ApiNativeScope scope; |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2326 EXPECT_EQ(i + 1, e->value.as_int32); | 2336 EXPECT_EQ(i + 1, e->value.as_int32); |
| 2327 } | 2337 } |
| 2328 } | 2338 } |
| 2329 } | 2339 } |
| 2330 Dart_ExitScope(); | 2340 Dart_ExitScope(); |
| 2331 Dart_ShutdownIsolate(); | 2341 Dart_ShutdownIsolate(); |
| 2332 } | 2342 } |
| 2333 | 2343 |
| 2334 VM_UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) { | 2344 VM_UNIT_TEST_CASE(DartGeneratedListMessagesWithBackref) { |
| 2335 const int kArrayLength = 10; | 2345 const int kArrayLength = 10; |
| 2336 static const char* kScriptChars = | 2346 static const char* kScriptCommonChars = |
| 2337 "import 'dart:typed_data';\n" | 2347 "import 'dart:typed_data';\n" |
| 2338 "final int kArrayLength = 10;\n" | 2348 "final int kArrayLength = 10;\n" |
| 2339 "getStringList() {\n" | 2349 "getStringList() {\n" |
| 2340 " var s = 'Hello, world!';\n" | 2350 " var s = 'Hello, world!';\n" |
| 2341 " var list = new List<String>(kArrayLength);\n" | 2351 " var list = new List<String>(kArrayLength);\n" |
| 2342 " for (var i = 0; i < kArrayLength; i++) list[i] = s;\n" | 2352 " for (var i = 0; i < kArrayLength; i++) list[i] = s;\n" |
| 2343 " return list;\n" | 2353 " return list;\n" |
| 2344 "}\n" | 2354 "}\n" |
| 2345 "getMintList() {\n" | 2355 "getMintList() {\n" |
| 2346 " var mint = 0x7FFFFFFFFFFFFFFF;\n" | 2356 " var mint = 0x7FFFFFFFFFFFFFFF;\n" |
| 2347 " var list = new List(kArrayLength);\n" | 2357 " var list = new List(kArrayLength);\n" |
| 2348 " for (var i = 0; i < kArrayLength; i++) list[i] = mint;\n" | 2358 " for (var i = 0; i < kArrayLength; i++) list[i] = mint;\n" |
| 2349 " return list;\n" | 2359 " return list;\n" |
| 2350 "}\n" | 2360 "}\n" |
| 2351 "getBigintList() {\n" | |
| 2352 " var bigint = 0x1234567890123456789012345678901234567890;\n" | |
| 2353 " var list = new List(kArrayLength);\n" | |
| 2354 " for (var i = 0; i < kArrayLength; i++) list[i] = bigint;\n" | |
| 2355 " return list;\n" | |
| 2356 "}\n" | |
| 2357 "getDoubleList() {\n" | 2361 "getDoubleList() {\n" |
| 2358 " var d = 3.14;\n" | 2362 " var d = 3.14;\n" |
| 2359 " var list = new List<double>(kArrayLength);\n" | 2363 " var list = new List<double>(kArrayLength);\n" |
| 2360 " for (var i = 0; i < kArrayLength; i++) list[i] = d;\n" | 2364 " for (var i = 0; i < kArrayLength; i++) list[i] = d;\n" |
| 2361 " return list;\n" | 2365 " return list;\n" |
| 2362 "}\n" | 2366 "}\n" |
| 2363 "getTypedDataList() {\n" | 2367 "getTypedDataList() {\n" |
| 2364 " var byte_array = new Uint8List(256);\n" | 2368 " var byte_array = new Uint8List(256);\n" |
| 2365 " var list = new List(kArrayLength);\n" | 2369 " var list = new List(kArrayLength);\n" |
| 2366 " for (var i = 0; i < kArrayLength; i++) list[i] = byte_array;\n" | 2370 " for (var i = 0; i < kArrayLength; i++) list[i] = byte_array;\n" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2382 " }\n" | 2386 " }\n" |
| 2383 " return list;\n" | 2387 " return list;\n" |
| 2384 "}\n" | 2388 "}\n" |
| 2385 "getSelfRefList() {\n" | 2389 "getSelfRefList() {\n" |
| 2386 " var list = new List(kArrayLength);\n" | 2390 " var list = new List(kArrayLength);\n" |
| 2387 " for (var i = 0; i < kArrayLength; i++) {\n" | 2391 " for (var i = 0; i < kArrayLength; i++) {\n" |
| 2388 " list[i] = list;\n" | 2392 " list[i] = list;\n" |
| 2389 " }\n" | 2393 " }\n" |
| 2390 " return list;\n" | 2394 " return list;\n" |
| 2391 "}\n"; | 2395 "}\n"; |
| 2396 static const char* kScriptBigintChars = |
| 2397 "getBigintList() {\n" |
| 2398 " var bigint = 0x1234567890123456789012345678901234567890;\n" |
| 2399 " var list = new List(kArrayLength);\n" |
| 2400 " for (var i = 0; i < kArrayLength; i++) list[i] = bigint;\n" |
| 2401 " return list;\n" |
| 2402 "}\n"; |
| 2392 | 2403 |
| 2393 TestCase::CreateTestIsolate(); | 2404 TestCase::CreateTestIsolate(); |
| 2394 Thread* thread = Thread::Current(); | 2405 Thread* thread = Thread::Current(); |
| 2395 EXPECT(thread->isolate() != NULL); | 2406 EXPECT(thread->isolate() != NULL); |
| 2396 Dart_EnterScope(); | 2407 Dart_EnterScope(); |
| 2397 | 2408 |
| 2398 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2409 const char* scriptChars = kScriptCommonChars; |
| 2410 if (!Bigint::IsDisabled()) { |
| 2411 scriptChars = |
| 2412 OS::SCreate(thread->zone(), "%s%s", scriptChars, kScriptBigintChars); |
| 2413 } |
| 2414 |
| 2415 Dart_Handle lib = TestCase::LoadTestScript(scriptChars, NULL); |
| 2399 EXPECT_VALID(lib); | 2416 EXPECT_VALID(lib); |
| 2400 | 2417 |
| 2401 { | 2418 { |
| 2402 CHECK_API_SCOPE(thread); | 2419 CHECK_API_SCOPE(thread); |
| 2403 HANDLESCOPE(thread); | 2420 HANDLESCOPE(thread); |
| 2404 StackZone zone(thread); | 2421 StackZone zone(thread); |
| 2405 intptr_t buf_len = 0; | 2422 intptr_t buf_len = 0; |
| 2406 { | 2423 { |
| 2407 // Generate a list of strings from Dart code. | 2424 // Generate a list of strings from Dart code. |
| 2408 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); | 2425 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2426 EXPECT_NOTNULL(root); | 2443 EXPECT_NOTNULL(root); |
| 2427 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2444 EXPECT_EQ(Dart_CObject_kArray, root->type); |
| 2428 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2445 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
| 2429 for (int i = 0; i < kArrayLength; i++) { | 2446 for (int i = 0; i < kArrayLength; i++) { |
| 2430 Dart_CObject* element = root->value.as_array.values[i]; | 2447 Dart_CObject* element = root->value.as_array.values[i]; |
| 2431 EXPECT_EQ(root->value.as_array.values[0], element); | 2448 EXPECT_EQ(root->value.as_array.values[0], element); |
| 2432 EXPECT_EQ(Dart_CObject_kInt64, element->type); | 2449 EXPECT_EQ(Dart_CObject_kInt64, element->type); |
| 2433 EXPECT_EQ(DART_INT64_C(0x7FFFFFFFFFFFFFFF), element->value.as_int64); | 2450 EXPECT_EQ(DART_INT64_C(0x7FFFFFFFFFFFFFFF), element->value.as_int64); |
| 2434 } | 2451 } |
| 2435 } | 2452 } |
| 2436 { | 2453 if (!Bigint::IsDisabled()) { |
| 2437 // Generate a list of bigints from Dart code. | 2454 // Generate a list of bigints from Dart code. |
| 2438 uint8_t* buf = GetSerialized(lib, "getBigintList", &buf_len); | 2455 uint8_t* buf = GetSerialized(lib, "getBigintList", &buf_len); |
| 2439 ApiNativeScope scope; | 2456 ApiNativeScope scope; |
| 2440 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2457 Dart_CObject* root = GetDeserialized(buf, buf_len); |
| 2441 EXPECT_NOTNULL(root); | 2458 EXPECT_NOTNULL(root); |
| 2442 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2459 EXPECT_EQ(Dart_CObject_kArray, root->type); |
| 2443 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2460 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
| 2444 for (int i = 0; i < kArrayLength; i++) { | 2461 for (int i = 0; i < kArrayLength; i++) { |
| 2445 Dart_CObject* element = root->value.as_array.values[i]; | 2462 Dart_CObject* element = root->value.as_array.values[i]; |
| 2446 EXPECT_EQ(root->value.as_array.values[0], element); | 2463 EXPECT_EQ(root->value.as_array.values[0], element); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2545 EXPECT_EQ(root, element); | 2562 EXPECT_EQ(root, element); |
| 2546 } | 2563 } |
| 2547 } | 2564 } |
| 2548 } | 2565 } |
| 2549 Dart_ExitScope(); | 2566 Dart_ExitScope(); |
| 2550 Dart_ShutdownIsolate(); | 2567 Dart_ShutdownIsolate(); |
| 2551 } | 2568 } |
| 2552 | 2569 |
| 2553 VM_UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) { | 2570 VM_UNIT_TEST_CASE(DartGeneratedArrayLiteralMessagesWithBackref) { |
| 2554 const int kArrayLength = 10; | 2571 const int kArrayLength = 10; |
| 2555 static const char* kScriptChars = | 2572 static const char* kScriptCommonChars = |
| 2556 "import 'dart:typed_data';\n" | 2573 "import 'dart:typed_data';\n" |
| 2557 "final int kArrayLength = 10;\n" | 2574 "final int kArrayLength = 10;\n" |
| 2558 "getStringList() {\n" | 2575 "getStringList() {\n" |
| 2559 " var s = 'Hello, world!';\n" | 2576 " var s = 'Hello, world!';\n" |
| 2560 " var list = [s, s, s, s, s, s, s, s, s, s];\n" | 2577 " var list = [s, s, s, s, s, s, s, s, s, s];\n" |
| 2561 " return list;\n" | 2578 " return list;\n" |
| 2562 "}\n" | 2579 "}\n" |
| 2563 "getMintList() {\n" | 2580 "getMintList() {\n" |
| 2564 " var mint = 0x7FFFFFFFFFFFFFFF;\n" | 2581 " var mint = 0x7FFFFFFFFFFFFFFF;\n" |
| 2565 " var list = [mint, mint, mint, mint, mint,\n" | 2582 " var list = [mint, mint, mint, mint, mint,\n" |
| 2566 " mint, mint, mint, mint, mint];\n" | 2583 " mint, mint, mint, mint, mint];\n" |
| 2567 " return list;\n" | 2584 " return list;\n" |
| 2568 "}\n" | 2585 "}\n" |
| 2569 "getBigintList() {\n" | |
| 2570 " var bigint = 0x1234567890123456789012345678901234567890;\n" | |
| 2571 " var list = [bigint, bigint, bigint, bigint, bigint,\n" | |
| 2572 " bigint, bigint, bigint, bigint, bigint];\n" | |
| 2573 " return list;\n" | |
| 2574 "}\n" | |
| 2575 "getDoubleList() {\n" | 2586 "getDoubleList() {\n" |
| 2576 " var d = 3.14;\n" | 2587 " var d = 3.14;\n" |
| 2577 " var list = [3.14, 3.14, 3.14, 3.14, 3.14, 3.14];\n" | 2588 " var list = [3.14, 3.14, 3.14, 3.14, 3.14, 3.14];\n" |
| 2578 " list.add(3.14);\n" | 2589 " list.add(3.14);\n" |
| 2579 " list.add(3.14);\n" | 2590 " list.add(3.14);\n" |
| 2580 " list.add(3.14);\n" | 2591 " list.add(3.14);\n" |
| 2581 " list.add(3.14);\n" | 2592 " list.add(3.14);\n" |
| 2582 " return list;\n" | 2593 " return list;\n" |
| 2583 "}\n" | 2594 "}\n" |
| 2584 "getTypedDataList() {\n" | 2595 "getTypedDataList() {\n" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2607 " }\n" | 2618 " }\n" |
| 2608 " return list;\n" | 2619 " return list;\n" |
| 2609 "}\n" | 2620 "}\n" |
| 2610 "getSelfRefList() {\n" | 2621 "getSelfRefList() {\n" |
| 2611 " var list = [];\n" | 2622 " var list = [];\n" |
| 2612 " for (var i = 0; i < kArrayLength; i++) {\n" | 2623 " for (var i = 0; i < kArrayLength; i++) {\n" |
| 2613 " list.add(list);\n" | 2624 " list.add(list);\n" |
| 2614 " }\n" | 2625 " }\n" |
| 2615 " return list;\n" | 2626 " return list;\n" |
| 2616 "}\n"; | 2627 "}\n"; |
| 2628 static const char* kScriptBigintChars = |
| 2629 "getBigintList() {\n" |
| 2630 " var bigint = 0x1234567890123456789012345678901234567890;\n" |
| 2631 " var list = [bigint, bigint, bigint, bigint, bigint,\n" |
| 2632 " bigint, bigint, bigint, bigint, bigint];\n" |
| 2633 " return list;\n" |
| 2634 "}\n"; |
| 2617 | 2635 |
| 2618 TestCase::CreateTestIsolate(); | 2636 TestCase::CreateTestIsolate(); |
| 2619 Thread* thread = Thread::Current(); | 2637 Thread* thread = Thread::Current(); |
| 2620 EXPECT(thread->isolate() != NULL); | 2638 EXPECT(thread->isolate() != NULL); |
| 2621 Dart_EnterScope(); | 2639 Dart_EnterScope(); |
| 2622 | 2640 |
| 2623 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2641 const char* scriptChars = kScriptCommonChars; |
| 2642 if (!Bigint::IsDisabled()) { |
| 2643 scriptChars = |
| 2644 OS::SCreate(thread->zone(), "%s%s", scriptChars, kScriptBigintChars); |
| 2645 } |
| 2646 Dart_Handle lib = TestCase::LoadTestScript(scriptChars, NULL); |
| 2624 EXPECT_VALID(lib); | 2647 EXPECT_VALID(lib); |
| 2625 | 2648 |
| 2626 { | 2649 { |
| 2627 CHECK_API_SCOPE(thread); | 2650 CHECK_API_SCOPE(thread); |
| 2628 HANDLESCOPE(thread); | 2651 HANDLESCOPE(thread); |
| 2629 StackZone zone(thread); | 2652 StackZone zone(thread); |
| 2630 intptr_t buf_len = 0; | 2653 intptr_t buf_len = 0; |
| 2631 { | 2654 { |
| 2632 // Generate a list of strings from Dart code. | 2655 // Generate a list of strings from Dart code. |
| 2633 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); | 2656 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2651 EXPECT_NOTNULL(root); | 2674 EXPECT_NOTNULL(root); |
| 2652 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2675 EXPECT_EQ(Dart_CObject_kArray, root->type); |
| 2653 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2676 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
| 2654 for (int i = 0; i < kArrayLength; i++) { | 2677 for (int i = 0; i < kArrayLength; i++) { |
| 2655 Dart_CObject* element = root->value.as_array.values[i]; | 2678 Dart_CObject* element = root->value.as_array.values[i]; |
| 2656 EXPECT_EQ(root->value.as_array.values[0], element); | 2679 EXPECT_EQ(root->value.as_array.values[0], element); |
| 2657 EXPECT_EQ(Dart_CObject_kInt64, element->type); | 2680 EXPECT_EQ(Dart_CObject_kInt64, element->type); |
| 2658 EXPECT_EQ(DART_INT64_C(0x7FFFFFFFFFFFFFFF), element->value.as_int64); | 2681 EXPECT_EQ(DART_INT64_C(0x7FFFFFFFFFFFFFFF), element->value.as_int64); |
| 2659 } | 2682 } |
| 2660 } | 2683 } |
| 2661 { | 2684 if (!Bigint::IsDisabled()) { |
| 2662 // Generate a list of bigints from Dart code. | 2685 // Generate a list of bigints from Dart code. |
| 2663 uint8_t* buf = GetSerialized(lib, "getBigintList", &buf_len); | 2686 uint8_t* buf = GetSerialized(lib, "getBigintList", &buf_len); |
| 2664 ApiNativeScope scope; | 2687 ApiNativeScope scope; |
| 2665 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2688 Dart_CObject* root = GetDeserialized(buf, buf_len); |
| 2666 EXPECT_NOTNULL(root); | 2689 EXPECT_NOTNULL(root); |
| 2667 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2690 EXPECT_EQ(Dart_CObject_kArray, root->type); |
| 2668 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2691 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
| 2669 for (int i = 0; i < kArrayLength; i++) { | 2692 for (int i = 0; i < kArrayLength; i++) { |
| 2670 Dart_CObject* element = root->value.as_array.values[i]; | 2693 Dart_CObject* element = root->value.as_array.values[i]; |
| 2671 EXPECT_EQ(root->value.as_array.values[0], element); | 2694 EXPECT_EQ(root->value.as_array.values[0], element); |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3069 StackZone zone(Thread::Current()); | 3092 StackZone zone(Thread::Current()); |
| 3070 uint8_t* buffer; | 3093 uint8_t* buffer; |
| 3071 MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true); | 3094 MessageWriter writer(&buffer, &zone_allocator, &zone_deallocator, true); |
| 3072 writer.WriteInlinedObjectHeader(kOmittedObjectId); | 3095 writer.WriteInlinedObjectHeader(kOmittedObjectId); |
| 3073 // For performance, we'd like single-byte headers when ids are omitted. | 3096 // For performance, we'd like single-byte headers when ids are omitted. |
| 3074 // If this starts failing, consider renumbering the snapshot ids. | 3097 // If this starts failing, consider renumbering the snapshot ids. |
| 3075 EXPECT_EQ(1, writer.BytesWritten()); | 3098 EXPECT_EQ(1, writer.BytesWritten()); |
| 3076 } | 3099 } |
| 3077 | 3100 |
| 3078 } // namespace dart | 3101 } // namespace dart |
| OLD | NEW |