Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(642)

Unified Diff: runtime/vm/isolate.cc

Issue 204003002: Support wedging isolates before startup or before exit. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/message_handler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/isolate.cc
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index a2f10ac7b3dc258b8eb58b17bd6cfea3573db904..0d32f427c9c4afa461c864866d4d65d7e05facc0 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -41,8 +41,10 @@ DEFINE_FLAG(bool, report_usage_count, false,
"Track function usage and report.");
DEFINE_FLAG(bool, trace_isolates, false,
"Trace isolate creation and shut down.");
-DEFINE_FLAG(bool, pin_isolates, false,
- "Stop isolates from being destroyed automatically.");
+DEFINE_FLAG(bool, pause_isolates_on_start, false,
+ "Pause isolates before starting.");
+DEFINE_FLAG(bool, pause_isolates_on_exit, false,
+ "Pause isolates exiting.");
void Isolate::RegisterClass(const Class& cls) {
@@ -299,7 +301,6 @@ Isolate::Isolate()
message_notify_callback_(NULL),
name_(NULL),
start_time_(OS::GetCurrentTimeMicros()),
- pin_port_(0),
main_port_(0),
heap_(NULL),
object_store_(NULL),
@@ -436,9 +437,8 @@ Isolate* Isolate::Init(const char* name_prefix) {
result->SetStackLimitFromCurrentTOS(reinterpret_cast<uword>(&result));
result->set_main_port(PortMap::CreatePort(result->message_handler()));
result->BuildName(name_prefix);
- if (FLAG_pin_isolates) {
- result->CreatePinPort();
- }
+ result->message_handler()->set_pause_on_start(FLAG_pause_isolates_on_start);
+ result->message_handler()->set_pause_on_exit(FLAG_pause_isolates_on_exit);
result->debugger_ = new Debugger();
result->debugger_->Initialize(result);
@@ -454,28 +454,6 @@ Isolate* Isolate::Init(const char* name_prefix) {
}
-void Isolate::CreatePinPort() {
- ASSERT(FLAG_pin_isolates);
- // Only do this once.
- ASSERT(pin_port_ == 0);
- pin_port_ = PortMap::CreatePort(message_handler());
- ASSERT(pin_port_ != 0);
- PortMap::SetLive(pin_port_);
-}
-
-
-void Isolate::ClosePinPort() {
- if (pin_port_ == 0) {
- // Support multiple calls to close.
- return;
- }
- ASSERT(pin_port_ != 0);
- bool r = PortMap::ClosePort(pin_port_);
- ASSERT(r);
- pin_port_ = 0;
-}
-
-
void Isolate::BuildName(const char* name_prefix) {
ASSERT(name_ == NULL);
if (name_prefix == NULL) {
@@ -916,7 +894,16 @@ void Isolate::PrintToJSONStream(JSONStream* stream) {
// inlined frames.
jsobj.AddProperty("depth", (intptr_t)0);
}
-
+ intptr_t live_ports = message_handler()->live_ports();
+ intptr_t control_ports = message_handler()->control_ports();
+ bool paused_on_exit = message_handler()->paused_on_exit();
+ bool pause_on_start = message_handler()->pause_on_start();
+ bool pause_on_exit = message_handler()->pause_on_exit();
+ jsobj.AddProperty("live_ports", live_ports);
+ jsobj.AddProperty("control_ports", control_ports);
+ jsobj.AddProperty("paused_on_exit", paused_on_exit);
+ jsobj.AddProperty("paused_on_start", pause_on_start);
+ jsobj.AddProperty("pause_on_exit", pause_on_exit);
const Library& lib =
Library::Handle(object_store()->root_library());
jsobj.AddProperty("rootLib", lib);
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/message_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698