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 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1159 Dart_Handle result; | 1159 Dart_Handle result; |
1160 | 1160 |
1161 uint8_t* isolate_snapshot_buffer; | 1161 uint8_t* isolate_snapshot_buffer; |
1162 | 1162 |
1163 // Start an Isolate, load a script and create a full snapshot. | 1163 // Start an Isolate, load a script and create a full snapshot. |
1164 Timer timer1(true, "Snapshot_test"); | 1164 Timer timer1(true, "Snapshot_test"); |
1165 timer1.Start(); | 1165 timer1.Start(); |
1166 { | 1166 { |
1167 TestIsolateScope __test_isolate__; | 1167 TestIsolateScope __test_isolate__; |
1168 | 1168 |
1169 Isolate* isolate = Isolate::Current(); | 1169 Thread* thread = Thread::Current(); |
1170 StackZone zone(isolate); | 1170 StackZone zone(thread); |
1171 HandleScope scope(Thread::Current()); | 1171 HandleScope scope(thread); |
1172 | 1172 |
1173 // Create a test library and Load up a test script in it. | 1173 // Create a test library and Load up a test script in it. |
1174 TestCase::LoadTestScript(kScriptChars, NULL); | 1174 TestCase::LoadTestScript(kScriptChars, NULL); |
1175 EXPECT_VALID(Api::CheckAndFinalizePendingClasses(isolate)); | 1175 EXPECT_VALID(Api::CheckAndFinalizePendingClasses(thread->isolate())); |
1176 timer1.Stop(); | 1176 timer1.Stop(); |
1177 OS::PrintErr("Without Snapshot: %" Pd64 "us\n", timer1.TotalElapsedTime()); | 1177 OS::PrintErr("Without Snapshot: %" Pd64 "us\n", timer1.TotalElapsedTime()); |
1178 | 1178 |
1179 // Write snapshot with object content. | 1179 // Write snapshot with object content. |
1180 { | 1180 { |
1181 FullSnapshotWriter writer(NULL, | 1181 FullSnapshotWriter writer(NULL, |
1182 &isolate_snapshot_buffer, | 1182 &isolate_snapshot_buffer, |
1183 &malloc_allocator, | 1183 &malloc_allocator, |
1184 false /* snapshot_code */); | 1184 false /* snapshot_code */); |
1185 writer.WriteFullSnapshot(); | 1185 writer.WriteFullSnapshot(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1218 const char* kScriptChars = kFullSnapshotScriptChars; | 1218 const char* kScriptChars = kFullSnapshotScriptChars; |
1219 | 1219 |
1220 uint8_t* isolate_snapshot_buffer; | 1220 uint8_t* isolate_snapshot_buffer; |
1221 | 1221 |
1222 // Start an Isolate, load a script and create a full snapshot. | 1222 // Start an Isolate, load a script and create a full snapshot. |
1223 Timer timer1(true, "Snapshot_test"); | 1223 Timer timer1(true, "Snapshot_test"); |
1224 timer1.Start(); | 1224 timer1.Start(); |
1225 { | 1225 { |
1226 TestIsolateScope __test_isolate__; | 1226 TestIsolateScope __test_isolate__; |
1227 | 1227 |
1228 Isolate* isolate = Isolate::Current(); | 1228 Thread* thread = Thread::Current(); |
1229 StackZone zone(isolate); | 1229 StackZone zone(thread); |
1230 HandleScope scope(Thread::Current()); | 1230 HandleScope scope(thread); |
1231 | 1231 |
1232 // Create a test library and Load up a test script in it. | 1232 // Create a test library and Load up a test script in it. |
1233 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 1233 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
1234 EXPECT_VALID(Api::CheckAndFinalizePendingClasses(isolate)); | 1234 EXPECT_VALID(Api::CheckAndFinalizePendingClasses(thread->isolate())); |
1235 timer1.Stop(); | 1235 timer1.Stop(); |
1236 OS::PrintErr("Without Snapshot: %" Pd64 "us\n", timer1.TotalElapsedTime()); | 1236 OS::PrintErr("Without Snapshot: %" Pd64 "us\n", timer1.TotalElapsedTime()); |
1237 | 1237 |
1238 // Write snapshot with object content. | 1238 // Write snapshot with object content. |
1239 { | 1239 { |
1240 FullSnapshotWriter writer(NULL, | 1240 FullSnapshotWriter writer(NULL, |
1241 &isolate_snapshot_buffer, | 1241 &isolate_snapshot_buffer, |
1242 &malloc_allocator, | 1242 &malloc_allocator, |
1243 false /* snapshot_code */); | 1243 false /* snapshot_code */); |
1244 writer.WriteFullSnapshot(); | 1244 writer.WriteFullSnapshot(); |
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1909 "getMixedList() {\n" | 1909 "getMixedList() {\n" |
1910 " var list = new List(kArrayLength);\n" | 1910 " var list = new List(kArrayLength);\n" |
1911 " list[0] = 0;\n" | 1911 " list[0] = 0;\n" |
1912 " list[1] = '1';\n" | 1912 " list[1] = '1';\n" |
1913 " list[2] = 2.2;\n" | 1913 " list[2] = 2.2;\n" |
1914 " list[3] = true;\n" | 1914 " list[3] = true;\n" |
1915 " return list;\n" | 1915 " return list;\n" |
1916 "}\n"; | 1916 "}\n"; |
1917 | 1917 |
1918 TestCase::CreateTestIsolate(); | 1918 TestCase::CreateTestIsolate(); |
1919 Isolate* isolate = Isolate::Current(); | 1919 Thread* thread = Thread::Current(); |
1920 EXPECT(isolate != NULL); | 1920 EXPECT(thread->isolate() != NULL); |
1921 Dart_EnterScope(); | 1921 Dart_EnterScope(); |
1922 | 1922 |
1923 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 1923 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
1924 EXPECT_VALID(lib); | 1924 EXPECT_VALID(lib); |
1925 | 1925 |
1926 { | 1926 { |
1927 DARTSCOPE(Thread::Current()); | 1927 DARTSCOPE(thread); |
1928 StackZone zone(isolate); | 1928 StackZone zone(thread); |
1929 intptr_t buf_len = 0; | 1929 intptr_t buf_len = 0; |
1930 { | 1930 { |
1931 // Generate a list of nulls from Dart code. | 1931 // Generate a list of nulls from Dart code. |
1932 uint8_t* buf = GetSerialized(lib, "getList", &buf_len); | 1932 uint8_t* buf = GetSerialized(lib, "getList", &buf_len); |
1933 ApiNativeScope scope; | 1933 ApiNativeScope scope; |
1934 Dart_CObject* root = GetDeserialized(buf, buf_len); | 1934 Dart_CObject* root = GetDeserialized(buf, buf_len); |
1935 EXPECT_NOTNULL(root); | 1935 EXPECT_NOTNULL(root); |
1936 EXPECT_EQ(Dart_CObject_kArray, root->type); | 1936 EXPECT_EQ(Dart_CObject_kArray, root->type); |
1937 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 1937 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
1938 for (int i = 0; i < kArrayLength; i++) { | 1938 for (int i = 0; i < kArrayLength; i++) { |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2033 " list.add([]);\n" | 2033 " list.add([]);\n" |
2034 " list.add([[]]);\n" | 2034 " list.add([[]]);\n" |
2035 " list.add([[[]]]);\n" | 2035 " list.add([[[]]]);\n" |
2036 " list.add([1, [2, [3]]]);\n" | 2036 " list.add([1, [2, [3]]]);\n" |
2037 " list.add([1, [1, 2, [1, 2, 3]]]);\n" | 2037 " list.add([1, [1, 2, [1, 2, 3]]]);\n" |
2038 " list.add([1, 2, 3]);\n" | 2038 " list.add([1, 2, 3]);\n" |
2039 " return list;\n" | 2039 " return list;\n" |
2040 "}\n"; | 2040 "}\n"; |
2041 | 2041 |
2042 TestCase::CreateTestIsolate(); | 2042 TestCase::CreateTestIsolate(); |
2043 Isolate* isolate = Isolate::Current(); | 2043 Thread* thread = Thread::Current(); |
2044 EXPECT(isolate != NULL); | 2044 EXPECT(thread->isolate() != NULL); |
2045 Dart_EnterScope(); | 2045 Dart_EnterScope(); |
2046 | 2046 |
2047 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2047 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
2048 EXPECT_VALID(lib); | 2048 EXPECT_VALID(lib); |
2049 | 2049 |
2050 { | 2050 { |
2051 DARTSCOPE(Thread::Current()); | 2051 DARTSCOPE(thread); |
2052 StackZone zone(isolate); | 2052 StackZone zone(thread); |
2053 intptr_t buf_len = 0; | 2053 intptr_t buf_len = 0; |
2054 { | 2054 { |
2055 // Generate a list of nulls from Dart code. | 2055 // Generate a list of nulls from Dart code. |
2056 uint8_t* buf = GetSerialized(lib, "getList", &buf_len); | 2056 uint8_t* buf = GetSerialized(lib, "getList", &buf_len); |
2057 ApiNativeScope scope; | 2057 ApiNativeScope scope; |
2058 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2058 Dart_CObject* root = GetDeserialized(buf, buf_len); |
2059 EXPECT_NOTNULL(root); | 2059 EXPECT_NOTNULL(root); |
2060 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2060 EXPECT_EQ(Dart_CObject_kArray, root->type); |
2061 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2061 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
2062 for (int i = 0; i < kArrayLength; i++) { | 2062 for (int i = 0; i < kArrayLength; i++) { |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2272 "}\n" | 2272 "}\n" |
2273 "getSelfRefList() {\n" | 2273 "getSelfRefList() {\n" |
2274 " var list = new List(kArrayLength);\n" | 2274 " var list = new List(kArrayLength);\n" |
2275 " for (var i = 0; i < kArrayLength; i++) {\n" | 2275 " for (var i = 0; i < kArrayLength; i++) {\n" |
2276 " list[i] = list;\n" | 2276 " list[i] = list;\n" |
2277 " }\n" | 2277 " }\n" |
2278 " return list;\n" | 2278 " return list;\n" |
2279 "}\n"; | 2279 "}\n"; |
2280 | 2280 |
2281 TestCase::CreateTestIsolate(); | 2281 TestCase::CreateTestIsolate(); |
2282 Isolate* isolate = Isolate::Current(); | 2282 Thread* thread = Thread::Current(); |
2283 EXPECT(isolate != NULL); | 2283 EXPECT(thread->isolate() != NULL); |
2284 Dart_EnterScope(); | 2284 Dart_EnterScope(); |
2285 | 2285 |
2286 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2286 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
2287 EXPECT_VALID(lib); | 2287 EXPECT_VALID(lib); |
2288 | 2288 |
2289 { | 2289 { |
2290 DARTSCOPE(Thread::Current()); | 2290 DARTSCOPE(thread); |
2291 StackZone zone(isolate); | 2291 StackZone zone(thread); |
2292 intptr_t buf_len = 0; | 2292 intptr_t buf_len = 0; |
2293 { | 2293 { |
2294 // Generate a list of strings from Dart code. | 2294 // Generate a list of strings from Dart code. |
2295 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); | 2295 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); |
2296 ApiNativeScope scope; | 2296 ApiNativeScope scope; |
2297 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2297 Dart_CObject* root = GetDeserialized(buf, buf_len); |
2298 EXPECT_NOTNULL(root); | 2298 EXPECT_NOTNULL(root); |
2299 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2299 EXPECT_EQ(Dart_CObject_kArray, root->type); |
2300 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2300 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
2301 for (int i = 0; i < kArrayLength; i++) { | 2301 for (int i = 0; i < kArrayLength; i++) { |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2497 "}\n" | 2497 "}\n" |
2498 "getSelfRefList() {\n" | 2498 "getSelfRefList() {\n" |
2499 " var list = [];\n" | 2499 " var list = [];\n" |
2500 " for (var i = 0; i < kArrayLength; i++) {\n" | 2500 " for (var i = 0; i < kArrayLength; i++) {\n" |
2501 " list.add(list);\n" | 2501 " list.add(list);\n" |
2502 " }\n" | 2502 " }\n" |
2503 " return list;\n" | 2503 " return list;\n" |
2504 "}\n"; | 2504 "}\n"; |
2505 | 2505 |
2506 TestCase::CreateTestIsolate(); | 2506 TestCase::CreateTestIsolate(); |
2507 Isolate* isolate = Isolate::Current(); | 2507 Thread* thread = Thread::Current(); |
2508 EXPECT(isolate != NULL); | 2508 EXPECT(thread->isolate() != NULL); |
2509 Dart_EnterScope(); | 2509 Dart_EnterScope(); |
2510 | 2510 |
2511 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2511 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
2512 EXPECT_VALID(lib); | 2512 EXPECT_VALID(lib); |
2513 | 2513 |
2514 { | 2514 { |
2515 DARTSCOPE(Thread::Current()); | 2515 DARTSCOPE(thread); |
2516 StackZone zone(isolate); | 2516 StackZone zone(thread); |
2517 intptr_t buf_len = 0; | 2517 intptr_t buf_len = 0; |
2518 { | 2518 { |
2519 // Generate a list of strings from Dart code. | 2519 // Generate a list of strings from Dart code. |
2520 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); | 2520 uint8_t* buf = GetSerialized(lib, "getStringList", &buf_len); |
2521 ApiNativeScope scope; | 2521 ApiNativeScope scope; |
2522 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2522 Dart_CObject* root = GetDeserialized(buf, buf_len); |
2523 EXPECT_NOTNULL(root); | 2523 EXPECT_NOTNULL(root); |
2524 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2524 EXPECT_EQ(Dart_CObject_kArray, root->type); |
2525 EXPECT_EQ(kArrayLength, root->value.as_array.length); | 2525 EXPECT_EQ(kArrayLength, root->value.as_array.length); |
2526 for (int i = 0; i < kArrayLength; i++) { | 2526 for (int i = 0; i < kArrayLength; i++) { |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2738 " list[index++] = new Int32List.view(data);\n" | 2738 " list[index++] = new Int32List.view(data);\n" |
2739 " list[index++] = new Uint32List.view(data);\n" | 2739 " list[index++] = new Uint32List.view(data);\n" |
2740 " list[index++] = new Int64List.view(data);\n" | 2740 " list[index++] = new Int64List.view(data);\n" |
2741 " list[index++] = new Uint64List.view(data);\n" | 2741 " list[index++] = new Uint64List.view(data);\n" |
2742 " list[index++] = new Float32List.view(data);\n" | 2742 " list[index++] = new Float32List.view(data);\n" |
2743 " list[index++] = new Float64List.view(data);\n" | 2743 " list[index++] = new Float64List.view(data);\n" |
2744 " return list;\n" | 2744 " return list;\n" |
2745 "}\n"; | 2745 "}\n"; |
2746 | 2746 |
2747 TestCase::CreateTestIsolate(); | 2747 TestCase::CreateTestIsolate(); |
2748 Isolate* isolate = Isolate::Current(); | 2748 Thread* thread = Thread::Current(); |
2749 EXPECT(isolate != NULL); | 2749 EXPECT(thread->isolate() != NULL); |
2750 Dart_EnterScope(); | 2750 Dart_EnterScope(); |
2751 | 2751 |
2752 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); | 2752 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); |
2753 EXPECT_VALID(lib); | 2753 EXPECT_VALID(lib); |
2754 | 2754 |
2755 { | 2755 { |
2756 DARTSCOPE(Thread::Current()); | 2756 DARTSCOPE(thread); |
2757 StackZone zone(isolate); | 2757 StackZone zone(thread); |
2758 intptr_t buf_len = 0; | 2758 intptr_t buf_len = 0; |
2759 { | 2759 { |
2760 // Generate a list of Uint8Lists from Dart code. | 2760 // Generate a list of Uint8Lists from Dart code. |
2761 uint8_t* buf = GetSerialized(lib, "getTypedDataList", &buf_len); | 2761 uint8_t* buf = GetSerialized(lib, "getTypedDataList", &buf_len); |
2762 ApiNativeScope scope; | 2762 ApiNativeScope scope; |
2763 Dart_CObject* root = GetDeserialized(buf, buf_len); | 2763 Dart_CObject* root = GetDeserialized(buf, buf_len); |
2764 EXPECT_NOTNULL(root); | 2764 EXPECT_NOTNULL(root); |
2765 EXPECT_EQ(Dart_CObject_kArray, root->type); | 2765 EXPECT_EQ(Dart_CObject_kArray, root->type); |
2766 struct { | 2766 struct { |
2767 Dart_TypedData_Type type; | 2767 Dart_TypedData_Type type; |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2989 StackZone zone(Thread::Current()); | 2989 StackZone zone(Thread::Current()); |
2990 uint8_t* buffer; | 2990 uint8_t* buffer; |
2991 MessageWriter writer(&buffer, &zone_allocator, true); | 2991 MessageWriter writer(&buffer, &zone_allocator, true); |
2992 writer.WriteInlinedObjectHeader(kOmittedObjectId); | 2992 writer.WriteInlinedObjectHeader(kOmittedObjectId); |
2993 // For performance, we'd like single-byte headers when ids are omitted. | 2993 // For performance, we'd like single-byte headers when ids are omitted. |
2994 // If this starts failing, consider renumbering the snapshot ids. | 2994 // If this starts failing, consider renumbering the snapshot ids. |
2995 EXPECT_EQ(1, writer.BytesWritten()); | 2995 EXPECT_EQ(1, writer.BytesWritten()); |
2996 } | 2996 } |
2997 | 2997 |
2998 } // namespace dart | 2998 } // namespace dart |
OLD | NEW |