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 #include "vm/isolate.h" | 5 #include "vm/isolate.h" |
6 | 6 |
7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
8 #include "include/dart_native_api.h" | 8 #include "include/dart_native_api.h" |
9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
10 #include "platform/text_buffer.h" | 10 #include "platform/text_buffer.h" |
(...skipping 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1062 MutexLocker ml(mutex_); | 1062 MutexLocker ml(mutex_); |
1063 // Check if we are in a valid state to make the isolate runnable. | 1063 // Check if we are in a valid state to make the isolate runnable. |
1064 if (is_runnable() == true) { | 1064 if (is_runnable() == true) { |
1065 return false; // Already runnable. | 1065 return false; // Already runnable. |
1066 } | 1066 } |
1067 // Set the isolate as runnable and if we are being spawned schedule | 1067 // Set the isolate as runnable and if we are being spawned schedule |
1068 // isolate on thread pool for execution. | 1068 // isolate on thread pool for execution. |
1069 ASSERT(object_store()->root_library() != Library::null()); | 1069 ASSERT(object_store()->root_library() != Library::null()); |
1070 set_is_runnable(true); | 1070 set_is_runnable(true); |
1071 if (!ServiceIsolate::IsServiceIsolate(this)) { | 1071 if (!ServiceIsolate::IsServiceIsolate(this)) { |
1072 message_handler()->set_pause_on_start(FLAG_pause_isolates_on_start); | |
1073 message_handler()->set_pause_on_exit(FLAG_pause_isolates_on_exit); | |
1074 if (FLAG_pause_isolates_on_unhandled_exceptions) { | 1072 if (FLAG_pause_isolates_on_unhandled_exceptions) { |
1075 debugger()->SetExceptionPauseInfo(kPauseOnUnhandledExceptions); | 1073 debugger()->SetExceptionPauseInfo(kPauseOnUnhandledExceptions); |
1076 } | 1074 } |
1077 } | 1075 } |
1078 IsolateSpawnState* state = spawn_state(); | 1076 IsolateSpawnState* state = spawn_state(); |
1079 if (state != NULL) { | 1077 if (state != NULL) { |
1080 ASSERT(this == state->isolate()); | 1078 ASSERT(this == state->isolate()); |
1081 Run(); | 1079 Run(); |
1082 } | 1080 } |
1083 TimelineStream* stream = GetIsolateStream(); | 1081 TimelineStream* stream = GetIsolateStream(); |
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1811 static_cast<int64_t>(origin_id())); | 1809 static_cast<int64_t>(origin_id())); |
1812 int64_t start_time_millis = start_time() / kMicrosecondsPerMillisecond; | 1810 int64_t start_time_millis = start_time() / kMicrosecondsPerMillisecond; |
1813 jsobj.AddPropertyTimeMillis("startTime", start_time_millis); | 1811 jsobj.AddPropertyTimeMillis("startTime", start_time_millis); |
1814 { | 1812 { |
1815 JSONObject jsheap(&jsobj, "_heaps"); | 1813 JSONObject jsheap(&jsobj, "_heaps"); |
1816 heap()->PrintToJSONObject(Heap::kNew, &jsheap); | 1814 heap()->PrintToJSONObject(Heap::kNew, &jsheap); |
1817 heap()->PrintToJSONObject(Heap::kOld, &jsheap); | 1815 heap()->PrintToJSONObject(Heap::kOld, &jsheap); |
1818 } | 1816 } |
1819 | 1817 |
1820 jsobj.AddProperty("livePorts", message_handler()->live_ports()); | 1818 jsobj.AddProperty("livePorts", message_handler()->live_ports()); |
1821 jsobj.AddProperty("pauseOnExit", message_handler()->pause_on_exit()); | 1819 jsobj.AddProperty("pauseOnExit", message_handler()->should_pause_on_exit()); |
1822 | 1820 |
1823 if (message_handler()->paused_on_start()) { | 1821 if (message_handler()->is_paused_on_start()) { |
1824 ASSERT(debugger()->PauseEvent() == NULL); | 1822 ASSERT(debugger()->PauseEvent() == NULL); |
1825 ServiceEvent pause_event(this, ServiceEvent::kPauseStart); | 1823 ServiceEvent pause_event(this, ServiceEvent::kPauseStart); |
1826 jsobj.AddProperty("pauseEvent", &pause_event); | 1824 jsobj.AddProperty("pauseEvent", &pause_event); |
1827 } else if (message_handler()->paused_on_exit()) { | 1825 } else if (message_handler()->is_paused_on_exit()) { |
1828 ASSERT(debugger()->PauseEvent() == NULL); | 1826 ASSERT(debugger()->PauseEvent() == NULL); |
1829 ServiceEvent pause_event(this, ServiceEvent::kPauseExit); | 1827 ServiceEvent pause_event(this, ServiceEvent::kPauseExit); |
1830 jsobj.AddProperty("pauseEvent", &pause_event); | 1828 jsobj.AddProperty("pauseEvent", &pause_event); |
1831 } else if (debugger()->PauseEvent() != NULL && !resume_request_) { | 1829 } else if (debugger()->PauseEvent() != NULL && !resume_request_) { |
1832 ServiceEvent pause_event(debugger()->PauseEvent()); | 1830 ServiceEvent pause_event(debugger()->PauseEvent()); |
1833 jsobj.AddProperty("pauseEvent", &pause_event); | 1831 jsobj.AddProperty("pauseEvent", &pause_event); |
1834 } else { | 1832 } else { |
1835 ServiceEvent pause_event(this, ServiceEvent::kResume); | 1833 ServiceEvent pause_event(this, ServiceEvent::kResume); |
1836 | 1834 |
1837 // TODO(turnidge): Don't compute a full stack trace. | 1835 // TODO(turnidge): Don't compute a full stack trace. |
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2632 void IsolateSpawnState::DecrementSpawnCount() { | 2630 void IsolateSpawnState::DecrementSpawnCount() { |
2633 ASSERT(spawn_count_monitor_ != NULL); | 2631 ASSERT(spawn_count_monitor_ != NULL); |
2634 ASSERT(spawn_count_ != NULL); | 2632 ASSERT(spawn_count_ != NULL); |
2635 MonitorLocker ml(spawn_count_monitor_); | 2633 MonitorLocker ml(spawn_count_monitor_); |
2636 ASSERT(*spawn_count_ > 0); | 2634 ASSERT(*spawn_count_ > 0); |
2637 *spawn_count_ = *spawn_count_ - 1; | 2635 *spawn_count_ = *spawn_count_ - 1; |
2638 ml.Notify(); | 2636 ml.Notify(); |
2639 } | 2637 } |
2640 | 2638 |
2641 } // namespace dart | 2639 } // namespace dart |
OLD | NEW |