Index: runtime/bin/vmservice_dartium.cc |
diff --git a/runtime/bin/vmservice_dartium.cc b/runtime/bin/vmservice_dartium.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..986aa927c5ede3285463f6cfaaee639ec5ae547a |
--- /dev/null |
+++ b/runtime/bin/vmservice_dartium.cc |
@@ -0,0 +1,103 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+#include "bin/vmservice_dartium.h" |
+ |
+#include "bin/builtin.h" |
+#include "bin/dartutils.h" |
+#include "bin/eventhandler.h" |
+#include "bin/platform.h" |
+#include "bin/thread.h" |
+#include "bin/vmservice_impl.h" |
+ |
+namespace dart { |
+namespace bin { |
+ |
+#define CHECK_RESULT(result) \ |
+ if (Dart_IsError(result)) { \ |
+ fprintf(stderr, "CHECK_RESULT failed: %s", Dart_GetError(result)); \ |
+ Dart_ExitScope(); \ |
+ Dart_ShutdownIsolate(); \ |
+ return 0; \ |
+ } \ |
+ |
+ |
+ |
+// snapshot_buffer points to a snapshot if we link in a snapshot otherwise |
+// it is initialized to NULL. |
+extern const uint8_t* snapshot_buffer; |
+ |
+static const char* DEFAULT_VM_SERVICE_SERVER_IP = "127.0.0.1"; |
+static const int DEFAULT_VM_SERVICE_SERVER_PORT = 0; |
+ |
+void VmServiceServer::Bootstrap() { |
+ if (!Platform::Initialize()) { |
+ fprintf(stderr, "Platform::Initialize() failed\n"); |
+ } |
+ DartUtils::SetOriginalWorkingDirectory(); |
+ Thread::InitOnce(); |
+ EventHandler::Start(); |
+} |
+ |
+ |
+Dart_Isolate VmServiceServer::CreateIsolate() { |
+ ASSERT(snapshot_buffer != NULL); |
+ // Create the isolate. |
+ char* error = 0; |
+ Dart_Isolate isolate = Dart_CreateIsolate(DART_VM_SERVICE_ISOLATE_NAME, |
+ "main", |
+ dart::bin::snapshot_buffer, |
+ NULL, |
+ &error); |
+ if (!isolate) { |
+ fprintf(stderr, "Dart_CreateIsolate failed: %s\n", error); |
+ return 0; |
+ } |
+ |
+ Dart_EnterScope(); |
+ Builtin::SetNativeResolver(Builtin::kBuiltinLibrary); |
+ Builtin::SetNativeResolver(Builtin::kIOLibrary); |
+ |
+ Dart_Handle builtin_lib = |
+ Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary); |
+ CHECK_RESULT(builtin_lib); |
+ |
+ Dart_Handle result; |
+ |
+ // Prepare for script loading by setting up the 'print' and 'timer' |
+ // closures and setting up 'package root' for URI resolution. |
+ result = DartUtils::PrepareForScriptLoading(NULL, true, builtin_lib); |
+ CHECK_RESULT(result); |
+ |
+ ASSERT(Dart_IsServiceIsolate(isolate)); |
+ if (!VmService::Setup(DEFAULT_VM_SERVICE_SERVER_IP, |
+ DEFAULT_VM_SERVICE_SERVER_PORT)) { |
+ fprintf(stderr, |
+ "Vmservice::Setup failed: %s\n", VmService::GetErrorMessage()); |
+ isolate = NULL; |
+ } |
+ Dart_ExitScope(); |
+ Dart_ExitIsolate(); |
+ return isolate; |
+} |
+ |
+ |
+const char* VmServiceServer::GetServerIP() { |
+ return VmService::GetServerIP(); |
+} |
+ |
+ |
+intptr_t VmServiceServer::GetServerPort() { |
+ return VmService::GetServerPort(); |
+} |
+ |
+ |
+/* DISALLOW_ALLOCATION */ |
+void VmServiceServer::operator delete(void* pointer) { |
+ fprintf(stderr, "unreachable code\n"); |
+ abort(); |
+} |
+ |
+} // namespace bin |
+} // namespace dart |