Index: sky/tools/packager/vm.cc |
diff --git a/sky/tools/packager/vm.cc b/sky/tools/packager/vm.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7472198dff37aa9fb41a5cdb9d68edd9b4fefb86 |
--- /dev/null |
+++ b/sky/tools/packager/vm.cc |
@@ -0,0 +1,43 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "sky/tools/packager/vm.h" |
+ |
+#include "base/logging.h" |
+#include "sky/tools/packager/loader.h" |
+#include "sky/tools/packager/logging.h" |
+ |
+namespace blink { |
+extern const uint8_t* kDartVmIsolateSnapshotBuffer; |
+extern const uint8_t* kDartIsolateSnapshotBuffer; |
+} |
+ |
+void InitDartVM() { |
+ int argc = 0; |
+ const char** argv = nullptr; |
+ |
+ CHECK(Dart_SetVMFlags(argc, argv)); |
+ CHECK(Dart_Initialize(blink::kDartVmIsolateSnapshotBuffer, |
+ nullptr, // Isolate created callback. |
+ nullptr, // Isolate interrupt callback. |
+ nullptr, // Unhandled exception callback. |
+ nullptr, // Isolate shutdown callback. |
+ // File IO callbacks. |
+ nullptr, nullptr, nullptr, nullptr, nullptr)); |
+} |
+ |
+Dart_Isolate CreateDartIsolate() { |
+ CHECK(blink::kDartIsolateSnapshotBuffer); |
+ char* error = nullptr; |
+ Dart_Isolate isolate = |
+ Dart_CreateIsolate("http://example.com", "main", |
+ blink::kDartIsolateSnapshotBuffer, nullptr, &error); |
+ |
+ CHECK(isolate) << error; |
+ CHECK(!LogIfError(Dart_SetLibraryTagHandler(HandleLibraryTag))); |
+ LoadSkyInternals(); |
+ |
+ Dart_ExitIsolate(); |
+ return isolate; |
+} |