| 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 | 
|  |