// 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/embedder/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, 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;
}
