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/dart_api_impl.h" | 10 #include "vm/dart_api_impl.h" |
(...skipping 1102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1113 String& uri = String::Handle(); | 1113 String& uri = String::Handle(); |
1114 for (intptr_t i = 0; i < lib_scripts.Length(); i++) { | 1114 for (intptr_t i = 0; i < lib_scripts.Length(); i++) { |
1115 script ^= lib_scripts.At(i); | 1115 script ^= lib_scripts.At(i); |
1116 EXPECT(!script.IsNull()); | 1116 EXPECT(!script.IsNull()); |
1117 uri = script.url(); | 1117 uri = script.url(); |
1118 OS::Print("Generating source for part: %s\n", uri.ToCString()); | 1118 OS::Print("Generating source for part: %s\n", uri.ToCString()); |
1119 GenerateSourceAndCheck(script); | 1119 GenerateSourceAndCheck(script); |
1120 } | 1120 } |
1121 } | 1121 } |
1122 | 1122 |
1123 TEST_CASE(GenerateSource) { | 1123 VM_TEST_CASE(GenerateSource) { |
1124 Zone* zone = thread->zone(); | 1124 Zone* zone = thread->zone(); |
1125 Isolate* isolate = thread->isolate(); | 1125 Isolate* isolate = thread->isolate(); |
1126 const GrowableObjectArray& libs = GrowableObjectArray::Handle( | 1126 const GrowableObjectArray& libs = GrowableObjectArray::Handle( |
1127 zone, isolate->object_store()->libraries()); | 1127 zone, isolate->object_store()->libraries()); |
1128 Library& lib = Library::Handle(); | 1128 Library& lib = Library::Handle(); |
1129 String& uri = String::Handle(); | 1129 String& uri = String::Handle(); |
1130 for (intptr_t i = 0; i < libs.Length(); i++) { | 1130 for (intptr_t i = 0; i < libs.Length(); i++) { |
1131 lib ^= libs.At(i); | 1131 lib ^= libs.At(i); |
1132 EXPECT(!lib.IsNull()); | 1132 EXPECT(!lib.IsNull()); |
1133 uri = lib.url(); | 1133 uri = lib.url(); |
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1834 EXPECT_VALID(surrogates_string_result); | 1834 EXPECT_VALID(surrogates_string_result); |
1835 EXPECT(Dart_IsString(surrogates_string_result)); | 1835 EXPECT(Dart_IsString(surrogates_string_result)); |
1836 | 1836 |
1837 Dart_Handle crappy_string_result; | 1837 Dart_Handle crappy_string_result; |
1838 crappy_string_result = | 1838 crappy_string_result = |
1839 Dart_Invoke(lib, NewString("getCrappyString"), 0, NULL); | 1839 Dart_Invoke(lib, NewString("getCrappyString"), 0, NULL); |
1840 EXPECT_VALID(crappy_string_result); | 1840 EXPECT_VALID(crappy_string_result); |
1841 EXPECT(Dart_IsString(crappy_string_result)); | 1841 EXPECT(Dart_IsString(crappy_string_result)); |
1842 | 1842 |
1843 { | 1843 { |
1844 DARTSCOPE(Thread::Current()); | 1844 Thread* thread = Thread::Current(); |
| 1845 CHECK_API_SCOPE(thread); |
| 1846 HANDLESCOPE(thread); |
1845 | 1847 |
1846 { | 1848 { |
1847 StackZone zone(Thread::Current()); | 1849 StackZone zone(thread); |
1848 Smi& smi = Smi::Handle(); | 1850 Smi& smi = Smi::Handle(); |
1849 smi ^= Api::UnwrapHandle(smi_result); | 1851 smi ^= Api::UnwrapHandle(smi_result); |
1850 uint8_t* buffer; | 1852 uint8_t* buffer; |
1851 MessageWriter writer(&buffer, &zone_allocator, false); | 1853 MessageWriter writer(&buffer, &zone_allocator, false); |
1852 writer.WriteMessage(smi); | 1854 writer.WriteMessage(smi); |
1853 intptr_t buffer_len = writer.BytesWritten(); | 1855 intptr_t buffer_len = writer.BytesWritten(); |
1854 | 1856 |
1855 // Read object back from the snapshot into a C structure. | 1857 // Read object back from the snapshot into a C structure. |
1856 ApiNativeScope scope; | 1858 ApiNativeScope scope; |
1857 ApiMessageReader api_reader(buffer, buffer_len); | 1859 ApiMessageReader api_reader(buffer, buffer_len); |
1858 Dart_CObject* root = api_reader.ReadMessage(); | 1860 Dart_CObject* root = api_reader.ReadMessage(); |
1859 EXPECT_NOTNULL(root); | 1861 EXPECT_NOTNULL(root); |
1860 EXPECT_EQ(Dart_CObject_kInt32, root->type); | 1862 EXPECT_EQ(Dart_CObject_kInt32, root->type); |
1861 EXPECT_EQ(42, root->value.as_int32); | 1863 EXPECT_EQ(42, root->value.as_int32); |
1862 CheckEncodeDecodeMessage(root); | 1864 CheckEncodeDecodeMessage(root); |
1863 } | 1865 } |
1864 { | 1866 { |
1865 StackZone zone(Thread::Current()); | 1867 StackZone zone(thread); |
1866 Bigint& bigint = Bigint::Handle(); | 1868 Bigint& bigint = Bigint::Handle(); |
1867 bigint ^= Api::UnwrapHandle(bigint_result); | 1869 bigint ^= Api::UnwrapHandle(bigint_result); |
1868 uint8_t* buffer; | 1870 uint8_t* buffer; |
1869 MessageWriter writer(&buffer, &zone_allocator, false); | 1871 MessageWriter writer(&buffer, &zone_allocator, false); |
1870 writer.WriteMessage(bigint); | 1872 writer.WriteMessage(bigint); |
1871 intptr_t buffer_len = writer.BytesWritten(); | 1873 intptr_t buffer_len = writer.BytesWritten(); |
1872 | 1874 |
1873 // Read object back from the snapshot into a C structure. | 1875 // Read object back from the snapshot into a C structure. |
1874 ApiNativeScope scope; | 1876 ApiNativeScope scope; |
1875 ApiMessageReader api_reader(buffer, buffer_len); | 1877 ApiMessageReader api_reader(buffer, buffer_len); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1926 | 1928 |
1927 TestCase::CreateTestIsolate(); | 1929 TestCase::CreateTestIsolate(); |
1928 Thread* thread = Thread::Current(); | 1930 Thread* thread = Thread::Current(); |
1929 EXPECT(thread->isolate() != NULL); | 1931 EXPECT(thread->isolate() != NULL); |
1930 Dart_EnterScope(); | 1932 Dart_EnterScope(); |
1931 | 1933 |
1932 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 1934 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
1933 EXPECT_VALID(lib); | 1935 EXPECT_VALID(lib); |
1934 | 1936 |
1935 { | 1937 { |
1936 DARTSCOPE(thread); | 1938 CHECK_API_SCOPE(thread); |
| 1939 HANDLESCOPE(thread); |
1937 StackZone zone(thread); | 1940 StackZone zone(thread); |
1938 intptr_t buf_len = 0; | 1941 intptr_t buf_len = 0; |
1939 { | 1942 { |
1940 // Generate a list of nulls from Dart code. | 1943 // Generate a list of nulls from Dart code. |
1941 uint8_t* buf = GetSerialized(lib, "getList", &buf_len); | 1944 uint8_t* buf = GetSerialized(lib, "getList", &buf_len); |
1942 ApiNativeScope scope; | 1945 ApiNativeScope scope; |
1943 Dart_CObject* root = GetDeserialized(buf, buf_len); | 1946 Dart_CObject* root = GetDeserialized(buf, buf_len); |
1944 EXPECT_NOTNULL(root); | 1947 EXPECT_NOTNULL(root); |
1945 EXPECT_EQ(Dart_CObject_kArray, root->type); | 1948 EXPECT_EQ(Dart_CObject_kArray, root->type); |
1946 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 1949 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2050 | 2053 |
2051 TestCase::CreateTestIsolate(); | 2054 TestCase::CreateTestIsolate(); |
2052 Thread* thread = Thread::Current(); | 2055 Thread* thread = Thread::Current(); |
2053 EXPECT(thread->isolate() != NULL); | 2056 EXPECT(thread->isolate() != NULL); |
2054 Dart_EnterScope(); | 2057 Dart_EnterScope(); |
2055 | 2058 |
2056 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2059 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
2057 EXPECT_VALID(lib); | 2060 EXPECT_VALID(lib); |
2058 | 2061 |
2059 { | 2062 { |
2060 DARTSCOPE(thread); | 2063 CHECK_API_SCOPE(thread); |
| 2064 HANDLESCOPE(thread); |
2061 StackZone zone(thread); | 2065 StackZone zone(thread); |
2062 intptr_t buf_len = 0; | 2066 intptr_t buf_len = 0; |
2063 { | 2067 { |
2064 // Generate a list of nulls from Dart code. | 2068 // Generate a list of nulls from Dart code. |
2065 uint8_t* buf = GetSerialized(lib, "getList", &buf_len); | 2069 uint8_t* buf = GetSerialized(lib, "getList", &buf_len); |
2066 ApiNativeScope scope; | 2070 ApiNativeScope scope; |
2067 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2071 Dart_CObject* root = GetDeserialized(buf, buf_len); |
2068 EXPECT_NOTNULL(root); | 2072 EXPECT_NOTNULL(root); |
2069 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2073 EXPECT_EQ(Dart_CObject_kArray, root->type); |
2070 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2074 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2289 | 2293 |
2290 TestCase::CreateTestIsolate(); | 2294 TestCase::CreateTestIsolate(); |
2291 Thread* thread = Thread::Current(); | 2295 Thread* thread = Thread::Current(); |
2292 EXPECT(thread->isolate() != NULL); | 2296 EXPECT(thread->isolate() != NULL); |
2293 Dart_EnterScope(); | 2297 Dart_EnterScope(); |
2294 | 2298 |
2295 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2299 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
2296 EXPECT_VALID(lib); | 2300 EXPECT_VALID(lib); |
2297 | 2301 |
2298 { | 2302 { |
2299 DARTSCOPE(thread); | 2303 CHECK_API_SCOPE(thread); |
| 2304 HANDLESCOPE(thread); |
2300 StackZone zone(thread); | 2305 StackZone zone(thread); |
2301 intptr_t buf_len = 0; | 2306 intptr_t buf_len = 0; |
2302 { | 2307 { |
2303 // Generate a list of strings from Dart code. | 2308 // Generate a list of strings from Dart code. |
2304 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); | 2309 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); |
2305 ApiNativeScope scope; | 2310 ApiNativeScope scope; |
2306 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2311 Dart_CObject* root = GetDeserialized(buf, buf_len); |
2307 EXPECT_NOTNULL(root); | 2312 EXPECT_NOTNULL(root); |
2308 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2313 EXPECT_EQ(Dart_CObject_kArray, root->type); |
2309 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2314 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2514 | 2519 |
2515 TestCase::CreateTestIsolate(); | 2520 TestCase::CreateTestIsolate(); |
2516 Thread* thread = Thread::Current(); | 2521 Thread* thread = Thread::Current(); |
2517 EXPECT(thread->isolate() != NULL); | 2522 EXPECT(thread->isolate() != NULL); |
2518 Dart_EnterScope(); | 2523 Dart_EnterScope(); |
2519 | 2524 |
2520 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2525 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
2521 EXPECT_VALID(lib); | 2526 EXPECT_VALID(lib); |
2522 | 2527 |
2523 { | 2528 { |
2524 DARTSCOPE(thread); | 2529 CHECK_API_SCOPE(thread); |
| 2530 HANDLESCOPE(thread); |
2525 StackZone zone(thread); | 2531 StackZone zone(thread); |
2526 intptr_t buf_len = 0; | 2532 intptr_t buf_len = 0; |
2527 { | 2533 { |
2528 // Generate a list of strings from Dart code. | 2534 // Generate a list of strings from Dart code. |
2529 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); | 2535 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); |
2530 ApiNativeScope scope; | 2536 ApiNativeScope scope; |
2531 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2537 Dart_CObject* root = GetDeserialized(buf, buf_len); |
2532 EXPECT_NOTNULL(root); | 2538 EXPECT_NOTNULL(root); |
2533 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2539 EXPECT_EQ(Dart_CObject_kArray, root->type); |
2534 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2540 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2755 | 2761 |
2756 TestCase::CreateTestIsolate(); | 2762 TestCase::CreateTestIsolate(); |
2757 Thread* thread = Thread::Current(); | 2763 Thread* thread = Thread::Current(); |
2758 EXPECT(thread->isolate() != NULL); | 2764 EXPECT(thread->isolate() != NULL); |
2759 Dart_EnterScope(); | 2765 Dart_EnterScope(); |
2760 | 2766 |
2761 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2767 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
2762 EXPECT_VALID(lib); | 2768 EXPECT_VALID(lib); |
2763 | 2769 |
2764 { | 2770 { |
2765 DARTSCOPE(thread); | 2771 CHECK_API_SCOPE(thread); |
| 2772 HANDLESCOPE(thread); |
2766 StackZone zone(thread); | 2773 StackZone zone(thread); |
2767 intptr_t buf_len = 0; | 2774 intptr_t buf_len = 0; |
2768 { | 2775 { |
2769 // Generate a list of Uint8Lists from Dart code. | 2776 // Generate a list of Uint8Lists from Dart code. |
2770 uint8_t* buf = GetSerialized(lib, "getTypedDataList", &buf_len); | 2777 uint8_t* buf = GetSerialized(lib, "getTypedDataList", &buf_len); |
2771 ApiNativeScope scope; | 2778 ApiNativeScope scope; |
2772 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2779 Dart_CObject* root = GetDeserialized(buf, buf_len); |
2773 EXPECT_NOTNULL(root); | 2780 EXPECT_NOTNULL(root); |
2774 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2781 EXPECT_EQ(Dart_CObject_kArray, root->type); |
2775 struct { | 2782 struct { |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2998 StackZone zone(Thread::Current()); | 3005 StackZone zone(Thread::Current()); |
2999 uint8_t* buffer; | 3006 uint8_t* buffer; |
3000 MessageWriter writer(&buffer, &zone_allocator, true); | 3007 MessageWriter writer(&buffer, &zone_allocator, true); |
3001 writer.WriteInlinedObjectHeader(kOmittedObjectId); | 3008 writer.WriteInlinedObjectHeader(kOmittedObjectId); |
3002 // For performance, we'd like single-byte headers when ids are omitted. | 3009 // For performance, we'd like single-byte headers when ids are omitted. |
3003 // If this starts failing, consider renumbering the snapshot ids. | 3010 // If this starts failing, consider renumbering the snapshot ids. |
3004 EXPECT_EQ(1, writer.BytesWritten()); | 3011 EXPECT_EQ(1, writer.BytesWritten()); |
3005 } | 3012 } |
3006 | 3013 |
3007 } // namespace dart | 3014 } // namespace dart |
OLD | NEW |