Index: runtime/vm/service/vmservice.dart |
diff --git a/runtime/vm/service/vmservice.dart b/runtime/vm/service/vmservice.dart |
index 3f53dbeb4c2a64add2bd93269daf78dde3e52fff..10e73c9b88257fb84aa423bb31a6656b2347cfdd 100644 |
--- a/runtime/vm/service/vmservice.dart |
+++ b/runtime/vm/service/vmservice.dart |
@@ -16,6 +16,9 @@ part 'running_isolates.dart'; |
part 'message.dart'; |
part 'message_router.dart'; |
+final RawReceivePort isolateLifecyclePort = new RawReceivePort(); |
+final RawReceivePort scriptLoadPort = new RawReceivePort(); |
+ |
class VMService extends MessageRouter { |
static VMService _instance; |
/// Collection of currently connected clients. |
@@ -104,13 +107,14 @@ class VMService extends MessageRouter { |
} |
VMService._internal() |
- : eventPort = new RawReceivePort() { |
+ : eventPort = isolateLifecyclePort { |
eventPort.handler = messageHandler; |
} |
factory VMService() { |
if (VMService._instance == null) { |
VMService._instance = new VMService._internal(); |
+ _onStart(); |
} |
return _instance; |
} |
@@ -142,9 +146,8 @@ class VMService extends MessageRouter { |
} |
RawReceivePort boot() { |
- // Boot the VMService. |
// Return the port we expect isolate startup and shutdown messages on. |
- return new VMService().eventPort; |
+ return isolateLifecyclePort; |
} |
void _registerIsolate(int port_id, SendPort sp, String name) { |
@@ -154,3 +157,5 @@ void _registerIsolate(int port_id, SendPort sp, String name) { |
void _setEventMask(int mask) |
native "VMService_SetEventMask"; |
+ |
+void _onStart() native "VMService_OnStart"; |