blob: f95cf5a544c9a710c7ca244428ea7d27c8b48e9e [file] [log] [blame]
// 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;
}