#pragma once #include "isolate/generic/array.h" #include "transferable.h" #include #include namespace ivm { /** * Reference to a v8 isolate */ class IsolateHandle : public TransferableHandle { private: std::shared_ptr isolate; class IsolateHandleTransferable : public Transferable { private: std::shared_ptr isolate; public: explicit IsolateHandleTransferable(std::shared_ptr isolate); auto TransferIn() -> v8::Local final; }; public: explicit IsolateHandle(std::shared_ptr isolate); static auto Definition() -> v8::Local; static auto New(v8::MaybeLocal maybe_options) -> std::unique_ptr; auto TransferOut() -> std::unique_ptr final; template auto CreateContext(v8::MaybeLocal maybe_options) -> v8::Local; template auto CompileScript(v8::Local code_handle, v8::MaybeLocal maybe_options) -> v8::Local; template auto CompileModule(v8::Local code_handle, v8::MaybeLocal maybe_options) -> v8::Local; auto CreateInspectorSession() -> v8::Local; auto Dispose() -> v8::Local; template auto GetHeapStatistics() -> v8::Local; auto GetCpuTime() -> v8::Local; auto GetWallTime() -> v8::Local; auto StartCpuProfiler(v8::Local title) -> v8::Local; template auto StopCpuProfiler(v8::Local title) -> v8::Local; auto GetReferenceCount() -> v8::Local; auto IsDisposedGetter() -> v8::Local; static auto CreateSnapshot(ArrayRange script_handles, v8::MaybeLocal warmup_handle) -> v8::Local; }; } // namespace ivm