OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 // TODO(zra): Remove when tests are ready to enable. | 5 // TODO(zra): Remove when tests are ready to enable. |
6 #include "platform/globals.h" | 6 #include "platform/globals.h" |
7 #if !defined(TARGET_ARCH_ARM64) | 7 #if !defined(TARGET_ARCH_ARM64) |
8 | 8 |
9 #include "include/dart_debugger_api.h" | 9 #include "include/dart_debugger_api.h" |
10 #include "vm/dart_api_impl.h" | 10 #include "vm/dart_api_impl.h" |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 "main() {\n" | 160 "main() {\n" |
161 "}"; | 161 "}"; |
162 | 162 |
163 Isolate* isolate = Isolate::Current(); | 163 Isolate* isolate = Isolate::Current(); |
164 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 164 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
165 EXPECT_VALID(lib); | 165 EXPECT_VALID(lib); |
166 | 166 |
167 // Build a mock message handler and wrap it in a dart port. | 167 // Build a mock message handler and wrap it in a dart port. |
168 ServiceTestMessageHandler handler; | 168 ServiceTestMessageHandler handler; |
169 Dart_Port port_id = PortMap::CreatePort(&handler); | 169 Dart_Port port_id = PortMap::CreatePort(&handler); |
170 Dart_Handle port = | 170 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
171 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
172 EXPECT_VALID(port); | 171 EXPECT_VALID(port); |
173 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 172 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
174 | 173 |
175 Instance& service_msg = Instance::Handle(); | 174 Instance& service_msg = Instance::Handle(); |
176 | 175 |
177 // Get the isolate summary. | 176 // Get the isolate summary. |
178 service_msg = Eval(lib, "[port, [], [], []]"); | 177 service_msg = Eval(lib, "[port, [], [], []]"); |
179 Service::HandleIsolateMessage(isolate, service_msg); | 178 Service::HandleIsolateMessage(isolate, service_msg); |
180 handler.HandleNextMessage(); | 179 handler.HandleNextMessage(); |
181 | 180 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 "main() {\n" | 215 "main() {\n" |
217 "}"; | 216 "}"; |
218 | 217 |
219 Isolate* isolate = Isolate::Current(); | 218 Isolate* isolate = Isolate::Current(); |
220 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 219 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
221 EXPECT_VALID(lib); | 220 EXPECT_VALID(lib); |
222 | 221 |
223 // Build a mock message handler and wrap it in a dart port. | 222 // Build a mock message handler and wrap it in a dart port. |
224 ServiceTestMessageHandler handler; | 223 ServiceTestMessageHandler handler; |
225 Dart_Port port_id = PortMap::CreatePort(&handler); | 224 Dart_Port port_id = PortMap::CreatePort(&handler); |
226 Dart_Handle port = | 225 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
227 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
228 EXPECT_VALID(port); | 226 EXPECT_VALID(port); |
229 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 227 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
230 | 228 |
231 Instance& service_msg = Instance::Handle(); | 229 Instance& service_msg = Instance::Handle(); |
232 | 230 |
233 // Get the stacktrace. | 231 // Get the stacktrace. |
234 service_msg = Eval(lib, "[port, ['stacktrace'], [], []]"); | 232 service_msg = Eval(lib, "[port, ['stacktrace'], [], []]"); |
235 Service::HandleIsolateMessage(isolate, service_msg); | 233 Service::HandleIsolateMessage(isolate, service_msg); |
236 handler.HandleNextMessage(); | 234 handler.HandleNextMessage(); |
237 EXPECT_STREQ( | 235 EXPECT_STREQ( |
(...skipping 19 matching lines...) Expand all Loading... |
257 "main() {\n" // We set breakpoint here. | 255 "main() {\n" // We set breakpoint here. |
258 "}"; | 256 "}"; |
259 | 257 |
260 Isolate* isolate = Isolate::Current(); | 258 Isolate* isolate = Isolate::Current(); |
261 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 259 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
262 EXPECT_VALID(lib); | 260 EXPECT_VALID(lib); |
263 | 261 |
264 // Build a mock message handler and wrap it in a dart port. | 262 // Build a mock message handler and wrap it in a dart port. |
265 ServiceTestMessageHandler handler; | 263 ServiceTestMessageHandler handler; |
266 Dart_Port port_id = PortMap::CreatePort(&handler); | 264 Dart_Port port_id = PortMap::CreatePort(&handler); |
267 Dart_Handle port = | 265 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
268 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
269 EXPECT_VALID(port); | 266 EXPECT_VALID(port); |
270 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 267 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
271 | 268 |
272 Instance& service_msg = Instance::Handle(); | 269 Instance& service_msg = Instance::Handle(); |
273 | 270 |
274 // Add a breakpoint. | 271 // Add a breakpoint. |
275 const String& url = String::Handle(String::New(TestCase::url())); | 272 const String& url = String::Handle(String::New(TestCase::url())); |
276 isolate->debugger()->SetBreakpointAtLine(url, 3); | 273 isolate->debugger()->SetBreakpointAtLine(url, 3); |
277 | 274 |
278 // Get the breakpoint list. | 275 // Get the breakpoint list. |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 "main() {\n" | 350 "main() {\n" |
354 "}"; | 351 "}"; |
355 | 352 |
356 Isolate* isolate = Isolate::Current(); | 353 Isolate* isolate = Isolate::Current(); |
357 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 354 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
358 EXPECT_VALID(lib); | 355 EXPECT_VALID(lib); |
359 | 356 |
360 // Build a mock message handler and wrap it in a dart port. | 357 // Build a mock message handler and wrap it in a dart port. |
361 ServiceTestMessageHandler handler; | 358 ServiceTestMessageHandler handler; |
362 Dart_Port port_id = PortMap::CreatePort(&handler); | 359 Dart_Port port_id = PortMap::CreatePort(&handler); |
363 Dart_Handle port = | 360 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
364 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
365 EXPECT_VALID(port); | 361 EXPECT_VALID(port); |
366 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 362 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
367 | 363 |
368 ObjectIdRing* ring = isolate->object_id_ring(); | 364 ObjectIdRing* ring = isolate->object_id_ring(); |
369 const String& str = String::Handle(String::New("value")); | 365 const String& str = String::Handle(String::New("value")); |
370 intptr_t str_id = ring->GetIdForObject(str.raw()); | 366 intptr_t str_id = ring->GetIdForObject(str.raw()); |
371 Dart_Handle valid_id = Dart_NewInteger(str_id); | 367 Dart_Handle valid_id = Dart_NewInteger(str_id); |
372 EXPECT_VALID(valid_id); | 368 EXPECT_VALID(valid_id); |
373 EXPECT_VALID(Dart_SetField(lib, NewString("validId"), valid_id)); | 369 EXPECT_VALID(Dart_SetField(lib, NewString("validId"), valid_id)); |
374 | 370 |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
573 for (intptr_t i = 0; i < libs.Length(); i++) { | 569 for (intptr_t i = 0; i < libs.Length(); i++) { |
574 if (libs.At(i) == lib.raw()) { | 570 if (libs.At(i) == lib.raw()) { |
575 lib_id = i; | 571 lib_id = i; |
576 } | 572 } |
577 } | 573 } |
578 ASSERT(lib_id > 0); | 574 ASSERT(lib_id > 0); |
579 | 575 |
580 // Build a mock message handler and wrap it in a dart port. | 576 // Build a mock message handler and wrap it in a dart port. |
581 ServiceTestMessageHandler handler; | 577 ServiceTestMessageHandler handler; |
582 Dart_Port port_id = PortMap::CreatePort(&handler); | 578 Dart_Port port_id = PortMap::CreatePort(&handler); |
583 Dart_Handle port = | 579 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
584 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
585 EXPECT_VALID(port); | 580 EXPECT_VALID(port); |
586 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); | 581 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); |
587 | 582 |
588 Instance& service_msg = Instance::Handle(); | 583 Instance& service_msg = Instance::Handle(); |
589 | 584 |
590 // Request library. | 585 // Request library. |
591 service_msg = EvalF(h_lib, | 586 service_msg = EvalF(h_lib, |
592 "[port, ['libraries', '%" Pd "'], [], []]", lib_id); | 587 "[port, ['libraries', '%" Pd "'], [], []]", lib_id); |
593 Service::HandleIsolateMessage(isolate, service_msg); | 588 Service::HandleIsolateMessage(isolate, service_msg); |
594 handler.HandleNextMessage(); | 589 handler.HandleNextMessage(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 EXPECT(!lib.IsNull()); | 633 EXPECT(!lib.IsNull()); |
639 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); | 634 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); |
640 EXPECT_VALID(result); | 635 EXPECT_VALID(result); |
641 const Class& class_a = Class::Handle(GetClass(lib, "A")); | 636 const Class& class_a = Class::Handle(GetClass(lib, "A")); |
642 EXPECT(!class_a.IsNull()); | 637 EXPECT(!class_a.IsNull()); |
643 intptr_t cid = class_a.id(); | 638 intptr_t cid = class_a.id(); |
644 | 639 |
645 // Build a mock message handler and wrap it in a dart port. | 640 // Build a mock message handler and wrap it in a dart port. |
646 ServiceTestMessageHandler handler; | 641 ServiceTestMessageHandler handler; |
647 Dart_Port port_id = PortMap::CreatePort(&handler); | 642 Dart_Port port_id = PortMap::CreatePort(&handler); |
648 Dart_Handle port = | 643 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
649 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
650 EXPECT_VALID(port); | 644 EXPECT_VALID(port); |
651 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); | 645 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); |
652 | 646 |
653 Instance& service_msg = Instance::Handle(); | 647 Instance& service_msg = Instance::Handle(); |
654 | 648 |
655 // Request an invalid class id. | 649 // Request an invalid class id. |
656 service_msg = Eval(h_lib, "[port, ['classes', '999999'], [], []]"); | 650 service_msg = Eval(h_lib, "[port, ['classes', '999999'], [], []]"); |
657 Service::HandleIsolateMessage(isolate, service_msg); | 651 Service::HandleIsolateMessage(isolate, service_msg); |
658 handler.HandleNextMessage(); | 652 handler.HandleNextMessage(); |
659 EXPECT_STREQ( | 653 EXPECT_STREQ( |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 EXPECT(!lib.IsNull()); | 773 EXPECT(!lib.IsNull()); |
780 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); | 774 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); |
781 EXPECT_VALID(result); | 775 EXPECT_VALID(result); |
782 const Class& class_a = Class::Handle(GetClass(lib, "A")); | 776 const Class& class_a = Class::Handle(GetClass(lib, "A")); |
783 EXPECT(!class_a.IsNull()); | 777 EXPECT(!class_a.IsNull()); |
784 intptr_t cid = class_a.id(); | 778 intptr_t cid = class_a.id(); |
785 | 779 |
786 // Build a mock message handler and wrap it in a dart port. | 780 // Build a mock message handler and wrap it in a dart port. |
787 ServiceTestMessageHandler handler; | 781 ServiceTestMessageHandler handler; |
788 Dart_Port port_id = PortMap::CreatePort(&handler); | 782 Dart_Port port_id = PortMap::CreatePort(&handler); |
789 Dart_Handle port = | 783 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
790 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
791 EXPECT_VALID(port); | 784 EXPECT_VALID(port); |
792 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); | 785 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); |
793 | 786 |
794 Instance& service_msg = Instance::Handle(); | 787 Instance& service_msg = Instance::Handle(); |
795 | 788 |
796 // Request the class A over the service. | 789 // Request the class A over the service. |
797 service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "'], [], []]", cid); | 790 service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "'], [], []]", cid); |
798 Service::HandleIsolateMessage(isolate, service_msg); | 791 Service::HandleIsolateMessage(isolate, service_msg); |
799 handler.HandleNextMessage(); | 792 handler.HandleNextMessage(); |
800 EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg()); | 793 EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg()); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
885 EXPECT(!code_c.IsNull()); | 878 EXPECT(!code_c.IsNull()); |
886 // Use the entry of the code object as it's reference. | 879 // Use the entry of the code object as it's reference. |
887 uword entry = code_c.EntryPoint(); | 880 uword entry = code_c.EntryPoint(); |
888 int64_t compile_timestamp = code_c.compile_timestamp(); | 881 int64_t compile_timestamp = code_c.compile_timestamp(); |
889 EXPECT_GT(code_c.Size(), 16); | 882 EXPECT_GT(code_c.Size(), 16); |
890 uword last = entry + code_c.Size(); | 883 uword last = entry + code_c.Size(); |
891 | 884 |
892 // Build a mock message handler and wrap it in a dart port. | 885 // Build a mock message handler and wrap it in a dart port. |
893 ServiceTestMessageHandler handler; | 886 ServiceTestMessageHandler handler; |
894 Dart_Port port_id = PortMap::CreatePort(&handler); | 887 Dart_Port port_id = PortMap::CreatePort(&handler); |
895 Dart_Handle port = | 888 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
896 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
897 EXPECT_VALID(port); | 889 EXPECT_VALID(port); |
898 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); | 890 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); |
899 | 891 |
900 Instance& service_msg = Instance::Handle(); | 892 Instance& service_msg = Instance::Handle(); |
901 | 893 |
902 // Request an invalid code object. | 894 // Request an invalid code object. |
903 service_msg = Eval(h_lib, "[port, ['code', '0'], [], []]"); | 895 service_msg = Eval(h_lib, "[port, ['code', '0'], [], []]"); |
904 Service::HandleIsolateMessage(isolate, service_msg); | 896 Service::HandleIsolateMessage(isolate, service_msg); |
905 handler.HandleNextMessage(); | 897 handler.HandleNextMessage(); |
906 EXPECT_STREQ( | 898 EXPECT_STREQ( |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
988 "main() {\n" | 980 "main() {\n" |
989 "}"; | 981 "}"; |
990 | 982 |
991 Isolate* isolate = Isolate::Current(); | 983 Isolate* isolate = Isolate::Current(); |
992 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 984 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
993 EXPECT_VALID(lib); | 985 EXPECT_VALID(lib); |
994 | 986 |
995 // Build a mock message handler and wrap it in a dart port. | 987 // Build a mock message handler and wrap it in a dart port. |
996 ServiceTestMessageHandler handler; | 988 ServiceTestMessageHandler handler; |
997 Dart_Port port_id = PortMap::CreatePort(&handler); | 989 Dart_Port port_id = PortMap::CreatePort(&handler); |
998 Dart_Handle port = | 990 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
999 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1000 EXPECT_VALID(port); | 991 EXPECT_VALID(port); |
1001 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 992 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
1002 | 993 |
1003 Instance& service_msg = Instance::Handle(); | 994 Instance& service_msg = Instance::Handle(); |
1004 service_msg = Eval(lib, "[port, ['vm'], [], []]"); | 995 service_msg = Eval(lib, "[port, ['vm'], [], []]"); |
1005 | 996 |
1006 Service::HandleRootMessage(service_msg); | 997 Service::HandleRootMessage(service_msg); |
1007 handler.HandleNextMessage(); | 998 handler.HandleNextMessage(); |
1008 EXPECT_SUBSTRING("\"type\":\"VM\",\"id\":\"vm\"", handler.msg()); | 999 EXPECT_SUBSTRING("\"type\":\"VM\",\"id\":\"vm\"", handler.msg()); |
1009 EXPECT_SUBSTRING("\"architecture\"", handler.msg()); | 1000 EXPECT_SUBSTRING("\"architecture\"", handler.msg()); |
(...skipping 10 matching lines...) Expand all Loading... |
1020 "main() {\n" | 1011 "main() {\n" |
1021 "}"; | 1012 "}"; |
1022 | 1013 |
1023 Isolate* isolate = Isolate::Current(); | 1014 Isolate* isolate = Isolate::Current(); |
1024 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL); | 1015 Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL); |
1025 EXPECT_VALID(h_lib); | 1016 EXPECT_VALID(h_lib); |
1026 | 1017 |
1027 // Build a mock message handler and wrap it in a dart port. | 1018 // Build a mock message handler and wrap it in a dart port. |
1028 ServiceTestMessageHandler handler; | 1019 ServiceTestMessageHandler handler; |
1029 Dart_Port port_id = PortMap::CreatePort(&handler); | 1020 Dart_Port port_id = PortMap::CreatePort(&handler); |
1030 Dart_Handle port = | 1021 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
1031 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1032 EXPECT_VALID(port); | 1022 EXPECT_VALID(port); |
1033 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); | 1023 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); |
1034 | 1024 |
1035 Instance& service_msg = Instance::Handle(); | 1025 Instance& service_msg = Instance::Handle(); |
1036 service_msg = Eval(h_lib, "[port, ['scripts', 'dart:test-lib'], [], []]"); | 1026 service_msg = Eval(h_lib, "[port, ['scripts', 'dart:test-lib'], [], []]"); |
1037 Service::HandleIsolateMessage(isolate, service_msg); | 1027 Service::HandleIsolateMessage(isolate, service_msg); |
1038 handler.HandleNextMessage(); | 1028 handler.HandleNextMessage(); |
1039 EXPECT_STREQ( | 1029 EXPECT_STREQ( |
1040 "{\"type\":\"Script\",\"id\":\"scripts\\/dart%3Atest-lib\"," | 1030 "{\"type\":\"Script\",\"id\":\"scripts\\/dart%3Atest-lib\"," |
1041 "\"name\":\"dart:test-lib\",\"user_name\":\"dart:test-lib\"," | 1031 "\"name\":\"dart:test-lib\",\"user_name\":\"dart:test-lib\"," |
(...skipping 19 matching lines...) Expand all Loading... |
1061 EXPECT_VALID(h_lib); | 1051 EXPECT_VALID(h_lib); |
1062 Library& lib = Library::Handle(); | 1052 Library& lib = Library::Handle(); |
1063 lib ^= Api::UnwrapHandle(h_lib); | 1053 lib ^= Api::UnwrapHandle(h_lib); |
1064 EXPECT(!lib.IsNull()); | 1054 EXPECT(!lib.IsNull()); |
1065 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); | 1055 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); |
1066 EXPECT_VALID(result); | 1056 EXPECT_VALID(result); |
1067 | 1057 |
1068 // Build a mock message handler and wrap it in a dart port. | 1058 // Build a mock message handler and wrap it in a dart port. |
1069 ServiceTestMessageHandler handler; | 1059 ServiceTestMessageHandler handler; |
1070 Dart_Port port_id = PortMap::CreatePort(&handler); | 1060 Dart_Port port_id = PortMap::CreatePort(&handler); |
1071 Dart_Handle port = | 1061 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
1072 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1073 EXPECT_VALID(port); | 1062 EXPECT_VALID(port); |
1074 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); | 1063 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); |
1075 | 1064 |
1076 Instance& service_msg = Instance::Handle(); | 1065 Instance& service_msg = Instance::Handle(); |
1077 service_msg = Eval(h_lib, "[port, ['coverage'], [], []]"); | 1066 service_msg = Eval(h_lib, "[port, ['coverage'], [], []]"); |
1078 Service::HandleIsolateMessage(isolate, service_msg); | 1067 Service::HandleIsolateMessage(isolate, service_msg); |
1079 handler.HandleNextMessage(); | 1068 handler.HandleNextMessage(); |
1080 EXPECT_SUBSTRING( | 1069 EXPECT_SUBSTRING( |
1081 "{\"source\":\"dart:test-lib\",\"script\":{" | 1070 "{\"source\":\"dart:test-lib\",\"script\":{" |
1082 "\"type\":\"@Script\",\"id\":\"scripts\\/dart%3Atest-lib\"," | 1071 "\"type\":\"@Script\",\"id\":\"scripts\\/dart%3Atest-lib\"," |
(...skipping 18 matching lines...) Expand all Loading... |
1101 EXPECT_VALID(h_lib); | 1090 EXPECT_VALID(h_lib); |
1102 Library& lib = Library::Handle(); | 1091 Library& lib = Library::Handle(); |
1103 lib ^= Api::UnwrapHandle(h_lib); | 1092 lib ^= Api::UnwrapHandle(h_lib); |
1104 EXPECT(!lib.IsNull()); | 1093 EXPECT(!lib.IsNull()); |
1105 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); | 1094 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); |
1106 EXPECT_VALID(result); | 1095 EXPECT_VALID(result); |
1107 | 1096 |
1108 // Build a mock message handler and wrap it in a dart port. | 1097 // Build a mock message handler and wrap it in a dart port. |
1109 ServiceTestMessageHandler handler; | 1098 ServiceTestMessageHandler handler; |
1110 Dart_Port port_id = PortMap::CreatePort(&handler); | 1099 Dart_Port port_id = PortMap::CreatePort(&handler); |
1111 Dart_Handle port = | 1100 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
1112 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1113 EXPECT_VALID(port); | 1101 EXPECT_VALID(port); |
1114 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); | 1102 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); |
1115 | 1103 |
1116 Instance& service_msg = Instance::Handle(); | 1104 Instance& service_msg = Instance::Handle(); |
1117 service_msg = Eval(h_lib, "[port, ['allocationprofile'], [], []]"); | 1105 service_msg = Eval(h_lib, "[port, ['allocationprofile'], [], []]"); |
1118 Service::HandleIsolateMessage(isolate, service_msg); | 1106 Service::HandleIsolateMessage(isolate, service_msg); |
1119 handler.HandleNextMessage(); | 1107 handler.HandleNextMessage(); |
1120 EXPECT_SUBSTRING("\"type\":\"AllocationProfile\"", handler.msg()); | 1108 EXPECT_SUBSTRING("\"type\":\"AllocationProfile\"", handler.msg()); |
1121 | 1109 |
1122 // Too long. | 1110 // Too long. |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1167 "main() {\n" | 1155 "main() {\n" |
1168 "}"; | 1156 "}"; |
1169 | 1157 |
1170 Isolate* isolate = Isolate::Current(); | 1158 Isolate* isolate = Isolate::Current(); |
1171 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 1159 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
1172 EXPECT_VALID(lib); | 1160 EXPECT_VALID(lib); |
1173 | 1161 |
1174 // Build a mock message handler and wrap it in a dart port. | 1162 // Build a mock message handler and wrap it in a dart port. |
1175 ServiceTestMessageHandler handler; | 1163 ServiceTestMessageHandler handler; |
1176 Dart_Port port_id = PortMap::CreatePort(&handler); | 1164 Dart_Port port_id = PortMap::CreatePort(&handler); |
1177 Dart_Handle port = | 1165 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
1178 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1179 EXPECT_VALID(port); | 1166 EXPECT_VALID(port); |
1180 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 1167 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
1181 | 1168 |
1182 Instance& service_msg = Instance::Handle(); | 1169 Instance& service_msg = Instance::Handle(); |
1183 service_msg = Eval(lib, "[port, ['heapmap'], [], []]"); | 1170 service_msg = Eval(lib, "[port, ['heapmap'], [], []]"); |
1184 Service::HandleIsolateMessage(isolate, service_msg); | 1171 Service::HandleIsolateMessage(isolate, service_msg); |
1185 handler.HandleNextMessage(); | 1172 handler.HandleNextMessage(); |
1186 EXPECT_SUBSTRING("\"type\":\"HeapMap\"", handler.msg()); | 1173 EXPECT_SUBSTRING("\"type\":\"HeapMap\"", handler.msg()); |
1187 EXPECT_SUBSTRING("\"pages\":[", handler.msg()); | 1174 EXPECT_SUBSTRING("\"pages\":[", handler.msg()); |
1188 } | 1175 } |
1189 | 1176 |
1190 | 1177 |
1191 TEST_CASE(Service_Address) { | 1178 TEST_CASE(Service_Address) { |
1192 const char* kScript = | 1179 const char* kScript = |
1193 "var port;\n" // Set to our mock port by C++. | 1180 "var port;\n" // Set to our mock port by C++. |
1194 "\n" | 1181 "\n" |
1195 "main() {\n" | 1182 "main() {\n" |
1196 "}"; | 1183 "}"; |
1197 | 1184 |
1198 Isolate* isolate = Isolate::Current(); | 1185 Isolate* isolate = Isolate::Current(); |
1199 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 1186 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
1200 EXPECT_VALID(lib); | 1187 EXPECT_VALID(lib); |
1201 | 1188 |
1202 // Build a mock message handler and wrap it in a dart port. | 1189 // Build a mock message handler and wrap it in a dart port. |
1203 ServiceTestMessageHandler handler; | 1190 ServiceTestMessageHandler handler; |
1204 Dart_Port port_id = PortMap::CreatePort(&handler); | 1191 Dart_Port port_id = PortMap::CreatePort(&handler); |
1205 Dart_Handle port = | 1192 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
1206 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1207 EXPECT_VALID(port); | 1193 EXPECT_VALID(port); |
1208 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 1194 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
1209 | 1195 |
1210 const String& str = String::Handle(String::New("foobar", Heap::kOld)); | 1196 const String& str = String::Handle(String::New("foobar", Heap::kOld)); |
1211 Instance& service_msg = Instance::Handle(); | 1197 Instance& service_msg = Instance::Handle(); |
1212 // Note: If we ever introduce old space compaction, this test might fail. | 1198 // Note: If we ever introduce old space compaction, this test might fail. |
1213 uword start_addr = RawObject::ToAddr(str.raw()); | 1199 uword start_addr = RawObject::ToAddr(str.raw()); |
1214 // Expect to find 'str', also from internal addresses. | 1200 // Expect to find 'str', also from internal addresses. |
1215 for (int offset = 0; offset < kObjectAlignment; ++offset) { | 1201 for (int offset = 0; offset < kObjectAlignment; ++offset) { |
1216 uword addr = start_addr + offset; | 1202 uword addr = start_addr + offset; |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1270 | 1256 |
1271 Isolate* isolate = Isolate::Current(); | 1257 Isolate* isolate = Isolate::Current(); |
1272 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 1258 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
1273 EXPECT_VALID(lib); | 1259 EXPECT_VALID(lib); |
1274 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); | 1260 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); |
1275 EXPECT_VALID(result); | 1261 EXPECT_VALID(result); |
1276 | 1262 |
1277 // Build a mock message handler and wrap it in a dart port. | 1263 // Build a mock message handler and wrap it in a dart port. |
1278 ServiceTestMessageHandler handler; | 1264 ServiceTestMessageHandler handler; |
1279 Dart_Port port_id = PortMap::CreatePort(&handler); | 1265 Dart_Port port_id = PortMap::CreatePort(&handler); |
1280 Dart_Handle port = | 1266 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
1281 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1282 EXPECT_VALID(port); | 1267 EXPECT_VALID(port); |
1283 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 1268 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
1284 | 1269 |
1285 | 1270 |
1286 Instance& service_msg = Instance::Handle(); | 1271 Instance& service_msg = Instance::Handle(); |
1287 service_msg = Eval(lib, "[port, ['alpha'], [], []]"); | 1272 service_msg = Eval(lib, "[port, ['alpha'], [], []]"); |
1288 Service::HandleRootMessage(service_msg); | 1273 Service::HandleRootMessage(service_msg); |
1289 handler.HandleNextMessage(); | 1274 handler.HandleNextMessage(); |
1290 EXPECT_STREQ("alpha", handler.msg()); | 1275 EXPECT_STREQ("alpha", handler.msg()); |
1291 service_msg = Eval(lib, "[port, ['beta'], [], []]"); | 1276 service_msg = Eval(lib, "[port, ['beta'], [], []]"); |
(...skipping 17 matching lines...) Expand all Loading... |
1309 | 1294 |
1310 Isolate* isolate = Isolate::Current(); | 1295 Isolate* isolate = Isolate::Current(); |
1311 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); | 1296 Dart_Handle lib = TestCase::LoadTestScript(kScript, NULL); |
1312 EXPECT_VALID(lib); | 1297 EXPECT_VALID(lib); |
1313 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); | 1298 Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL); |
1314 EXPECT_VALID(result); | 1299 EXPECT_VALID(result); |
1315 | 1300 |
1316 // Build a mock message handler and wrap it in a dart port. | 1301 // Build a mock message handler and wrap it in a dart port. |
1317 ServiceTestMessageHandler handler; | 1302 ServiceTestMessageHandler handler; |
1318 Dart_Port port_id = PortMap::CreatePort(&handler); | 1303 Dart_Port port_id = PortMap::CreatePort(&handler); |
1319 Dart_Handle port = | 1304 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
1320 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1321 EXPECT_VALID(port); | 1305 EXPECT_VALID(port); |
1322 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); | 1306 EXPECT_VALID(Dart_SetField(lib, NewString("port"), port)); |
1323 | 1307 |
1324 Instance& service_msg = Instance::Handle(); | 1308 Instance& service_msg = Instance::Handle(); |
1325 service_msg = Eval(lib, "[port, ['alpha'], [], []]"); | 1309 service_msg = Eval(lib, "[port, ['alpha'], [], []]"); |
1326 Service::HandleIsolateMessage(isolate, service_msg); | 1310 Service::HandleIsolateMessage(isolate, service_msg); |
1327 handler.HandleNextMessage(); | 1311 handler.HandleNextMessage(); |
1328 EXPECT_STREQ("alpha", handler.msg()); | 1312 EXPECT_STREQ("alpha", handler.msg()); |
1329 service_msg = Eval(lib, "[port, ['beta'], [], []]"); | 1313 service_msg = Eval(lib, "[port, ['beta'], [], []]"); |
1330 Service::HandleIsolateMessage(isolate, service_msg); | 1314 Service::HandleIsolateMessage(isolate, service_msg); |
(...skipping 16 matching lines...) Expand all Loading... |
1347 EXPECT_VALID(h_lib); | 1331 EXPECT_VALID(h_lib); |
1348 Library& lib = Library::Handle(); | 1332 Library& lib = Library::Handle(); |
1349 lib ^= Api::UnwrapHandle(h_lib); | 1333 lib ^= Api::UnwrapHandle(h_lib); |
1350 EXPECT(!lib.IsNull()); | 1334 EXPECT(!lib.IsNull()); |
1351 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); | 1335 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); |
1352 EXPECT_VALID(result); | 1336 EXPECT_VALID(result); |
1353 | 1337 |
1354 // Build a mock message handler and wrap it in a dart port. | 1338 // Build a mock message handler and wrap it in a dart port. |
1355 ServiceTestMessageHandler handler; | 1339 ServiceTestMessageHandler handler; |
1356 Dart_Port port_id = PortMap::CreatePort(&handler); | 1340 Dart_Port port_id = PortMap::CreatePort(&handler); |
1357 Dart_Handle port = | 1341 Dart_Handle port = Api::NewHandle(isolate, SendPort::New(port_id)); |
1358 Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id)); | |
1359 EXPECT_VALID(port); | 1342 EXPECT_VALID(port); |
1360 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); | 1343 EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port)); |
1361 | 1344 |
1362 Instance& service_msg = Instance::Handle(); | 1345 Instance& service_msg = Instance::Handle(); |
1363 service_msg = Eval(h_lib, "[port, ['profile'], [], []]"); | 1346 service_msg = Eval(h_lib, "[port, ['profile'], [], []]"); |
1364 Service::HandleIsolateMessage(isolate, service_msg); | 1347 Service::HandleIsolateMessage(isolate, service_msg); |
1365 handler.HandleNextMessage(); | 1348 handler.HandleNextMessage(); |
1366 // Expect profile | 1349 // Expect profile |
1367 EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg()); | 1350 EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg()); |
1368 | 1351 |
1369 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hide']]"); | 1352 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hide']]"); |
1370 Service::HandleIsolateMessage(isolate, service_msg); | 1353 Service::HandleIsolateMessage(isolate, service_msg); |
1371 handler.HandleNextMessage(); | 1354 handler.HandleNextMessage(); |
1372 // Expect profile | 1355 // Expect profile |
1373 EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg()); | 1356 EXPECT_SUBSTRING("\"type\":\"Profile\"", handler.msg()); |
1374 | 1357 |
1375 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]"); | 1358 service_msg = Eval(h_lib, "[port, ['profile'], ['tags'], ['hidden']]"); |
1376 Service::HandleIsolateMessage(isolate, service_msg); | 1359 Service::HandleIsolateMessage(isolate, service_msg); |
1377 handler.HandleNextMessage(); | 1360 handler.HandleNextMessage(); |
1378 // Expect error. | 1361 // Expect error. |
1379 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); | 1362 EXPECT_SUBSTRING("\"type\":\"Error\"", handler.msg()); |
1380 } | 1363 } |
1381 | 1364 |
1382 } // namespace dart | 1365 } // namespace dart |
1383 | 1366 |
1384 #endif // !defined(TARGET_ARCH_ARM64) | 1367 #endif // !defined(TARGET_ARCH_ARM64) |
OLD | NEW |