6e33c95463
Adds shared libraries for embedding Dart VM and new API (runtime/engine/include/dart_engine.h). TEST=tests/standalone/embedder_samples_test.dart Cq-Include-Trybots: luci.dart.try:vm-aot-android-release-arm64c-try,vm-aot-android-release-arm_x64-try,vm-aot-asan-linux-release-x64-try,vm-aot-dwarf-linux-product-x64-try,vm-aot-dyn-linux-debug-x64-try,vm-aot-linux-debug-simarm_x64-try,vm-aot-linux-debug-simriscv32-try,vm-aot-linux-debug-simriscv64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-aot-linux-product-x64-try,vm-aot-linux-release-arm64-try,vm-aot-linux-release-simarm_x64-try,vm-aot-linux-release-x64-try,vm-aot-mac-product-arm64-try,vm-aot-mac-release-arm64-try,vm-aot-mac-release-x64-try,vm-aot-msan-linux-release-x64-try,vm-aot-obfuscate-linux-release-x64-try,vm-aot-optimization-level-linux-release-x64-try,vm-aot-tsan-linux-release-x64-try,vm-aot-ubsan-linux-release-x64-try,vm-aot-win-debug-x64-try,vm-aot-win-debug-x64c-try,vm-aot-win-product-x64-try,vm-aot-win-release-x64-try,vm-appjit-linux-debug-x64-try,vm-appjit-linux-product-x64-try,vm-appjit-linux-release-x64-try,vm-asan-linux-release-arm64-try,vm-asan-linux-release-x64-try,vm-checked-mac-release-arm64-try,vm-eager-optimization-linux-release-ia32-try,vm-eager-optimization-linux-release-x64-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-android-product-arm-try,vm-ffi-android-product-arm64c-try,vm-ffi-android-release-arm-try,vm-ffi-android-release-arm64c-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-qemu-linux-release-riscv64-try,vm-fuchsia-release-arm64-try,vm-fuchsia-release-x64-try,vm-gcc-linux-try,vm-linux-debug-ia32-try,vm-linux-debug-simriscv32-try,vm-linux-debug-simriscv64-try,vm-linux-debug-x64-try,vm-linux-debug-x64c-try,vm-linux-release-arm64-try,vm-linux-release-ia32-try,vm-linux-release-simarm-try,vm-linux-release-x64-try,vm-mac-debug-arm64-try,vm-mac-debug-x64-try,vm-mac-release-arm64-try,vm-mac-release-x64-try,vm-msan-linux-release-arm64-try,vm-msan-linux-release-x64-try,vm-msvc-windows-try,vm-reload-linux-debug-x64-try,vm-reload-linux-release-x64-try,vm-reload-rollback-linux-debug-x64-try,vm-reload-rollback-linux-release-x64-try,vm-tsan-linux-release-arm64-try,vm-tsan-linux-release-x64-try,vm-ubsan-linux-release-arm64-try,vm-ubsan-linux-release-x64-try,vm-win-debug-x64-try,vm-win-debug-x64c-try,vm-win-release-ia32-try,vm-win-release-x64-try Change-Id: Ia4e4d1b871ddef515cfb2f4639bdaa9fe3676936 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/402860 Reviewed-by: Slava Egorov <vegorov@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com>
77 lines
2.3 KiB
C++
77 lines
2.3 KiB
C++
// Copyright (c) 2025, 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 <cstdint>
|
|
#include <memory>
|
|
#include <vector>
|
|
#include "engine/engine.h"
|
|
#include "include/dart_api.h"
|
|
#include "include/dart_engine.h"
|
|
#include "platform/utils.h"
|
|
|
|
namespace dart {
|
|
namespace engine {
|
|
|
|
DART_EXPORT bool DartEngine_Init(char** error) {
|
|
return Engine::instance()->Initialize(error);
|
|
}
|
|
|
|
DART_EXPORT void DartEngine_Shutdown() {
|
|
Engine::instance()->Shutdown();
|
|
}
|
|
|
|
DART_EXPORT DartEngine_SnapshotData DartEngine_KernelFromFile(const char* path,
|
|
char** error) {
|
|
return Engine::instance()->KernelFromFile(path, error);
|
|
}
|
|
|
|
DART_EXPORT DartEngine_SnapshotData
|
|
DartEngine_AotSnapshotFromFile(const char* path, char** error) {
|
|
return Engine::instance()->AotFromFile(path, error);
|
|
}
|
|
|
|
DART_EXPORT Dart_Isolate
|
|
DartEngine_CreateIsolate(DartEngine_SnapshotData snapshot_data, char** error) {
|
|
if (!Engine::instance()->Initialize(error)) {
|
|
return nullptr;
|
|
}
|
|
return Engine::instance()->StartIsolate(snapshot_data, error);
|
|
}
|
|
|
|
DART_EXPORT void DartEngine_AcquireIsolate(Dart_Isolate isolate) {
|
|
Engine::instance()->LockIsolate(isolate);
|
|
Dart_EnterIsolate(isolate);
|
|
}
|
|
|
|
DART_EXPORT void DartEngine_ReleaseIsolate() {
|
|
Dart_Isolate current = Dart_CurrentIsolate();
|
|
ASSERT(current != nullptr);
|
|
Dart_ExitIsolate();
|
|
Engine::instance()->UnlockIsolate(current);
|
|
}
|
|
|
|
DART_EXPORT void DartEngine_SetHandleMessageErrorCallback(
|
|
DartEngine_HandleMessageErrorCallback handle_message_error_callback) {
|
|
Engine::instance()->SetHandleMessageErrorCallback(
|
|
handle_message_error_callback);
|
|
}
|
|
|
|
DART_EXPORT void DartEngine_SetDefaultMessageScheduler(
|
|
DartEngine_MessageScheduler scheduler) {
|
|
Engine::instance()->SetDefaultMessageScheduler(scheduler);
|
|
}
|
|
|
|
DART_EXPORT void DartEngine_SetMessageScheduler(
|
|
DartEngine_MessageScheduler scheduler,
|
|
Dart_Isolate isolate) {
|
|
Engine::instance()->SetMessageScheduler(scheduler, isolate);
|
|
}
|
|
|
|
DART_EXPORT void DartEngine_HandleMessage(Dart_Isolate isolate) {
|
|
Engine::instance()->HandleMessage(isolate);
|
|
}
|
|
|
|
} // namespace engine
|
|
} // namespace dart
|