| 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_api.h" | 5 #include "include/dart_api.h" |
| 6 #include "platform/assert.h" | 6 #include "platform/assert.h" |
| 7 #include "platform/utils.h" | 7 #include "platform/utils.h" |
| 8 #include "vm/dart_api_impl.h" | 8 #include "vm/dart_api_impl.h" |
| 9 #include "vm/dart_api_state.h" | 9 #include "vm/dart_api_state.h" |
| 10 #include "vm/thread.h" | 10 #include "vm/thread.h" |
| (...skipping 2733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2744 | 2744 |
| 2745 result = Dart_InvokeStatic(result, | 2745 result = Dart_InvokeStatic(result, |
| 2746 Dart_NewString(""), | 2746 Dart_NewString(""), |
| 2747 Dart_NewString("main"), | 2747 Dart_NewString("main"), |
| 2748 0, | 2748 0, |
| 2749 NULL); | 2749 NULL); |
| 2750 EXPECT_VALID(result); | 2750 EXPECT_VALID(result); |
| 2751 } | 2751 } |
| 2752 | 2752 |
| 2753 | 2753 |
| 2754 static bool RunLoopTestCallback(void* data, char** error) { | 2754 static bool RunLoopTestCallback(const char* name_prefix, |
| 2755 void* data, char** error) { |
| 2755 const char* kScriptChars = | 2756 const char* kScriptChars = |
| 2756 "#import('builtin');\n" | 2757 "#import('builtin');\n" |
| 2757 "class MyIsolate extends Isolate {\n" | 2758 "class MyIsolate extends Isolate {\n" |
| 2758 " MyIsolate() : super() { }\n" | 2759 " MyIsolate() : super() { }\n" |
| 2759 " void main() {\n" | 2760 " void main() {\n" |
| 2760 " port.receive((message, replyTo) {\n" | 2761 " port.receive((message, replyTo) {\n" |
| 2761 " if (message) {\n" | 2762 " if (message) {\n" |
| 2762 " throw new Exception('MakeChildExit');\n" | 2763 " throw new Exception('MakeChildExit');\n" |
| 2763 " } else {\n" | 2764 " } else {\n" |
| 2764 " replyTo.call('hello');\n" | 2765 " replyTo.call('hello');\n" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2790 Dart_ExitScope(); | 2791 Dart_ExitScope(); |
| 2791 return true; | 2792 return true; |
| 2792 } | 2793 } |
| 2793 | 2794 |
| 2794 | 2795 |
| 2795 // Common code for RunLoop_Success/RunLoop_Failure. | 2796 // Common code for RunLoop_Success/RunLoop_Failure. |
| 2796 static void RunLoopTest(bool throw_exception_child, | 2797 static void RunLoopTest(bool throw_exception_child, |
| 2797 bool throw_exception_parent) { | 2798 bool throw_exception_parent) { |
| 2798 Dart_IsolateCreateCallback saved = Isolate::CreateCallback(); | 2799 Dart_IsolateCreateCallback saved = Isolate::CreateCallback(); |
| 2799 Isolate::SetCreateCallback(RunLoopTestCallback); | 2800 Isolate::SetCreateCallback(RunLoopTestCallback); |
| 2800 RunLoopTestCallback(NULL, NULL); | 2801 RunLoopTestCallback(NULL, NULL, NULL); |
| 2801 | 2802 |
| 2802 Dart_EnterScope(); | 2803 Dart_EnterScope(); |
| 2803 Dart_Handle lib = Dart_LookupLibrary(Dart_NewString(TestCase::url())); | 2804 Dart_Handle lib = Dart_LookupLibrary(Dart_NewString(TestCase::url())); |
| 2804 EXPECT_VALID(lib); | 2805 EXPECT_VALID(lib); |
| 2805 | 2806 |
| 2806 Dart_Handle result; | 2807 Dart_Handle result; |
| 2807 Dart_Handle args[2]; | 2808 Dart_Handle args[2]; |
| 2808 args[0] = (throw_exception_child ? Dart_True() : Dart_False()); | 2809 args[0] = (throw_exception_child ? Dart_True() : Dart_False()); |
| 2809 args[1] = (throw_exception_parent ? Dart_True() : Dart_False()); | 2810 args[1] = (throw_exception_parent ? Dart_True() : Dart_False()); |
| 2810 result = Dart_InvokeStatic(lib, | 2811 result = Dart_InvokeStatic(lib, |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2885 " function();\n" | 2886 " function();\n" |
| 2886 " }\n" | 2887 " }\n" |
| 2887 "}\n"; | 2888 "}\n"; |
| 2888 | 2889 |
| 2889 | 2890 |
| 2890 // Tell the other thread that shared_isolate is created. | 2891 // Tell the other thread that shared_isolate is created. |
| 2891 Dart_Handle lib; | 2892 Dart_Handle lib; |
| 2892 { | 2893 { |
| 2893 sync->Enter(); | 2894 sync->Enter(); |
| 2894 char* error = NULL; | 2895 char* error = NULL; |
| 2895 shared_isolate = Dart_CreateIsolate(NULL, NULL, &error); | 2896 shared_isolate = Dart_CreateIsolate(NULL, NULL, NULL, &error); |
| 2896 EXPECT(shared_isolate != NULL); | 2897 EXPECT(shared_isolate != NULL); |
| 2897 Dart_EnterScope(); | 2898 Dart_EnterScope(); |
| 2898 Dart_Handle url = Dart_NewString(TestCase::url()); | 2899 Dart_Handle url = Dart_NewString(TestCase::url()); |
| 2899 Dart_Handle source = Dart_NewString(kScriptChars); | 2900 Dart_Handle source = Dart_NewString(kScriptChars); |
| 2900 lib = Dart_LoadScript(url, source, TestCase::library_handler); | 2901 lib = Dart_LoadScript(url, source, TestCase::library_handler); |
| 2901 EXPECT_VALID(lib); | 2902 EXPECT_VALID(lib); |
| 2902 Dart_Handle result = Dart_SetNativeResolver( | 2903 Dart_Handle result = Dart_SetNativeResolver( |
| 2903 lib, &IsolateInterruptTestNativeLookup); | 2904 lib, &IsolateInterruptTestNativeLookup); |
| 2904 DART_CHECK_VALID(result); | 2905 DART_CHECK_VALID(result); |
| 2905 | 2906 |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3001 // We should have received the expected number of interrupts. | 3002 // We should have received the expected number of interrupts. |
| 3002 EXPECT_EQ(kInterruptCount, interrupt_count); | 3003 EXPECT_EQ(kInterruptCount, interrupt_count); |
| 3003 | 3004 |
| 3004 // Give the spawned thread enough time to properly exit. | 3005 // Give the spawned thread enough time to properly exit. |
| 3005 Isolate::SetInterruptCallback(saved); | 3006 Isolate::SetInterruptCallback(saved); |
| 3006 } | 3007 } |
| 3007 | 3008 |
| 3008 #endif // TARGET_ARCH_IA32. | 3009 #endif // TARGET_ARCH_IA32. |
| 3009 | 3010 |
| 3010 } // namespace dart | 3011 } // namespace dart |
| OLD | NEW |