Chromium Code Reviews| Index: runtime/vm/isolate.cc |
| diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc |
| index 2432df990bfa34e8945bc702086c827c4bef13c6..929f46064a822bc753e6f1a0f46789aedafcfb9c 100644 |
| --- a/runtime/vm/isolate.cc |
| +++ b/runtime/vm/isolate.cc |
| @@ -518,6 +518,7 @@ bool IsolateMessageHandler::ProcessUnhandledException(const Error& result) { |
| if ((exception == I->object_store()->out_of_memory()) || |
| (exception == I->object_store()->stack_overflow())) { |
| // We didn't notify the debugger when the stack was full. Do it now. |
| + ASSERT(I->debugger() != NULL); |
| I->debugger()->SignalExceptionThrown(Instance::Handle(exception)); |
| } |
| } |
| @@ -775,8 +776,10 @@ Isolate* Isolate::Init(const char* name_prefix, |
| result->set_terminate_capability(result->random()->NextUInt64()); |
| result->BuildName(name_prefix); |
| - result->debugger_ = new Debugger(); |
| - result->debugger_->Initialize(result); |
| + if (!is_vm_isolate) { |
| + result->debugger_ = new Debugger(); |
| + result->debugger_->Initialize(result); |
| + } |
| if (FLAG_trace_isolates) { |
| if (name_prefix == NULL || strcmp(name_prefix, "vm-isolate") != 0) { |
| OS::Print("[+] Starting isolate:\n" |
| @@ -1221,6 +1224,7 @@ static bool RunIsolate(uword parameter) { |
| // of its implicit closure function because that latter is merely |
| // a dispatcher that is marked as undebuggable. |
| if (FLAG_break_at_isolate_spawn) { |
| + ASSERT(isolate->debugger() != NULL); |
| isolate->debugger()->OneTimeBreakAtEntry(func); |
| } |
| @@ -1425,7 +1429,9 @@ void Isolate::Shutdown() { |
| } |
| // Clean up debugger resources. |
| - debugger()->Shutdown(); |
| + if (debugger() != NULL) { |
| + debugger()->Shutdown(); |
| + } |
| // Close all the ports owned by this isolate. |
| PortMap::ClosePorts(message_handler()); |
| @@ -1526,6 +1532,7 @@ void Isolate::VisitObjectPointers(ObjectPointerVisitor* visitor, |
| reinterpret_cast<RawObject**>(&deoptimized_code_array_)); |
| // Visit objects in the debugger. |
| + ASSERT(debugger() != NULL); |
|
Ivan Posva
2015/06/16 16:31:15
if (debugger() != NULL) {
...
}
Since we are vi
|
| debugger()->VisitObjectPointers(visitor); |
| // Visit objects that are being used for deoptimization. |
| @@ -1582,6 +1589,7 @@ void Isolate::PrintJSON(JSONStream* stream, bool ref) { |
| jsobj.AddProperty("livePorts", message_handler()->live_ports()); |
| jsobj.AddProperty("pauseOnExit", message_handler()->pause_on_exit()); |
| + ASSERT(debugger() != NULL); |
|
Ivan Posva
2015/06/16 16:31:15
We should allow printing of the VM isolate.
|
| if (message_handler()->paused_on_start()) { |
| ASSERT(debugger()->PauseEvent() == NULL); |
| ServiceEvent pause_event(this, ServiceEvent::kPauseStart); |