| // 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 "mojo/dart/dart_snapshotter/vm.h" |
| |
| #include "base/logging.h" |
| #include "tonic/dart_error.h" |
| #include "tonic/dart_state.h" |
| |
| namespace mojo { |
| namespace dart { |
| extern const uint8_t* vm_isolate_snapshot_buffer; |
| extern const uint8_t* isolate_snapshot_buffer; |
| } |
| } |
| |
| static const char* kDartArgs[] = { |
| "--enable_mirrors=false", |
| }; |
| |
| void InitDartVM() { |
| CHECK(Dart_SetVMFlags(arraysize(kDartArgs), kDartArgs)); |
| CHECK(Dart_Initialize(mojo::dart::vm_isolate_snapshot_buffer, nullptr, |
| nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, |
| nullptr, nullptr)); |
| } |
| |
| Dart_Isolate CreateDartIsolate() { |
| CHECK(mojo::dart::isolate_snapshot_buffer); |
| char* error = nullptr; |
| auto isolate_data = new SnapshotterDartState(); |
| CHECK(isolate_data != nullptr); |
| Dart_Isolate isolate = Dart_CreateIsolate("dart:snapshot", |
| "main", |
| mojo::dart::isolate_snapshot_buffer, |
| nullptr, |
| isolate_data, |
| &error); |
| CHECK(isolate) << error; |
| Dart_ExitIsolate(); |
| isolate_data->SetIsolate(isolate); |
| return isolate; |
| } |