Index: Source/bindings/dart/DartController.cpp |
diff --git a/Source/bindings/dart/DartController.cpp b/Source/bindings/dart/DartController.cpp |
index a82f8451802e6e60c6cd0b6610625dd71e47f914..871cfdf4a8cc671d69e6a1e175fcdedf47045249 100644 |
--- a/Source/bindings/dart/DartController.cpp |
+++ b/Source/bindings/dart/DartController.cpp |
@@ -244,7 +244,6 @@ Dart_Isolate DartController::createIsolate(const char* scriptURL, const char* en |
return isolate; |
} |
- |
void DartController::createDOMEnabledIsolateIfNeeded(const String& scriptURL, const String& entryPoint, Document* document) |
{ |
if (m_isolate) { |
@@ -252,26 +251,16 @@ void DartController::createDOMEnabledIsolateIfNeeded(const String& scriptURL, co |
return; |
} |
+ // Start the service. |
+ bool result = DartService::Start(document); |
+ UNUSED_PARAM(result); |
+ ASSERT(result); |
+ ASSERT(!Dart_CurrentIsolate()); |
+ |
// FIXME: proper error reporting. |
char* errorMessage = 0; |
m_isolate = createIsolate(scriptURL.utf8().data(), entryPoint.utf8().data(), document, true, &errorMessage); |
ASSERT(m_isolate); |
- if (getenv("DARTIUM_VMSERVICE")) { |
- // createIsolate exits with current isolate set to m_isolate, we need to |
- // exit it so we can startup the service. |
- Dart_ExitIsolate(); |
- |
- bool result = DartService::Start(document); |
- UNUSED_PARAM(result); |
- ASSERT(result); |
- ASSERT(!Dart_CurrentIsolate()); |
- |
- Dart_EnterIsolate(m_isolate); |
- Dart_EnterScope(); |
- DartService::SendIsolateStartupMessage(); |
- Dart_ExitScope(); |
- } |
- |
} |
void DartController::shutdownIsolate(Dart_Isolate isolate) |
@@ -286,8 +275,6 @@ void DartController::shutdownIsolate(Dart_Isolate isolate) |
for (DartIsolateDestructionObservers::iterator it = observers->begin(); it != observers->end(); ++it) |
(*it)->isolateDestroyed(); |
Dart_ShutdownIsolate(); |
- // Stop the service. |
- DartService::Stop(); |
delete domData; |
} |
@@ -410,6 +397,16 @@ private: |
String m_url; |
}; |
+ |
+Dart_Isolate DartController::createServiceIsolateCallback(void* callbackData, char** error) |
+{ |
+ Document* document = static_cast<Document*>(callbackData); |
+ Dart_Isolate serviceIsolate = DartController::createIsolate("dart:vmservice_dartium", "main", document, true, error); |
+ Dart_ExitIsolate(); |
+ return serviceIsolate; |
+} |
+ |
+ |
Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, const char* entryPoint, void* data, char** errorMsg) |
{ |
bool isSpawnUri = scriptURL ? true : false; |
@@ -451,11 +448,6 @@ Dart_Isolate DartController::createPureIsolateCallback(const char* scriptURL, co |
Document* document = static_cast<Document*>(context); |
Dart_Isolate isolate = createIsolate(scriptURL, entryPoint, document, false, errorMsg); |
- { |
- Dart_EnterScope(); |
- DartService::SendIsolateStartupMessage(); |
- Dart_ExitScope(); |
- } |
if (!isolate) { |
// This triggers an exception in the caller. |
@@ -602,9 +594,8 @@ void DartController::initVMIfNeeded() |
setDartFlags(0); |
} |
- // FIXME(antonm): implement proper shutdown callback. |
// FIXME(antonm): implement proper unhandled exception callback. |
- Dart_Initialize(&createPureIsolateCallback, 0, 0, DartService::VmServiceShutdownCallback, openFileCallback, readFileCallback, writeFileCallback, closeFileCallback, generateEntropy); |
+ Dart_Initialize(&createPureIsolateCallback, 0, 0, 0, openFileCallback, readFileCallback, writeFileCallback, closeFileCallback, generateEntropy, createServiceIsolateCallback); |
hasBeenInitialized = true; |
} |