Index: runtime/vm/dart_api_impl.cc |
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc |
index 43d308eb52fae79ee2c5bb23c9905d7760d5a1c4..74a28bc58569af43a88350f43233f1ef4ae6d949 100644 |
--- a/runtime/vm/dart_api_impl.cc |
+++ b/runtime/vm/dart_api_impl.cc |
@@ -1365,6 +1365,74 @@ DART_EXPORT void Dart_ThreadEnableProfiling() { |
} |
+DART_EXPORT bool Dart_ShouldPauseOnStart() { |
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ return isolate->message_handler()->pause_on_start(); |
+} |
+ |
+ |
+DART_EXPORT void Dart_SetShouldPauseOnStart(bool v) { |
turnidge
2016/02/03 21:33:36
v -> value or perhaps should_pause.
Cutch
2016/02/03 23:04:04
Done.
|
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ isolate->set_pause_isolates_flags_overridden(true); |
+ return isolate->message_handler()->set_pause_on_start(v); |
+} |
+ |
+ |
+DART_EXPORT bool Dart_IsPausedOnStart() { |
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ return isolate->message_handler()->paused_on_start(); |
+} |
+ |
+ |
+DART_EXPORT void Dart_SetPausedOnStart(bool v) { |
turnidge
2016/02/03 21:33:36
v -> value or paused, here and below.
Cutch
2016/02/03 23:04:04
Done.
|
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ if (isolate->message_handler()->paused_on_start() != v) { |
+ isolate->message_handler()->PausedOnStart(v); |
+ if (v) { |
+ isolate->message_handler()->NotifyPauseOnStart(); |
+ } |
+ } |
turnidge
2016/02/03 21:33:36
As discussed offline, consider making a single api
Cutch
2016/02/03 23:04:04
Done.
|
+} |
+ |
+ |
+DART_EXPORT bool Dart_ShouldPauseOnExit() { |
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ return isolate->message_handler()->pause_on_exit(); |
+} |
+ |
+ |
+DART_EXPORT void Dart_SetShouldPauseOnExit(bool v) { |
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ isolate->set_pause_isolates_flags_overridden(true); |
+ return isolate->message_handler()->set_pause_on_exit(v); |
+} |
+ |
+ |
+DART_EXPORT bool Dart_IsPausedOnExit() { |
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ return isolate->message_handler()->paused_on_exit(); |
+} |
+ |
+ |
+DART_EXPORT void Dart_SetPausedOnExit(bool v) { |
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ if (isolate->message_handler()->paused_on_exit() != v) { |
+ isolate->message_handler()->PausedOnExit(v); |
+ if (v) { |
+ isolate->message_handler()->NotifyPauseOnExit(); |
+ } |
+ } |
+} |
+ |
+ |
DART_EXPORT void Dart_ExitIsolate() { |
Thread* T = Thread::Current(); |
CHECK_ISOLATE(T->isolate()); |
@@ -1579,6 +1647,22 @@ DART_EXPORT Dart_Handle Dart_HandleMessage() { |
} |
+DART_EXPORT Dart_Handle Dart_HandleMessages() { |
+ Thread* T = Thread::Current(); |
+ Isolate* I = T->isolate(); |
+ CHECK_API_SCOPE(T); |
+ CHECK_CALLBACK_STATE(T); |
+ API_TIMELINE_BEGIN_END; |
+ TransitionNativeToVM transition(T); |
+ if (I->message_handler()->HandleNormalMessages() != MessageHandler::kOK) { |
+ Dart_Handle error = Api::NewHandle(T, I->object_store()->sticky_error()); |
+ I->object_store()->clear_sticky_error(); |
+ return error; |
+ } |
+ return Api::Success(); |
+} |
+ |
+ |
DART_EXPORT bool Dart_HandleServiceMessages() { |
Thread* T = Thread::Current(); |
Isolate* I = T->isolate(); |