#pragma once #include "isolate/remote_handle.h" #include "transferable.h" #include "transferable.h" #include #include namespace ivm { class ContextHandle; class ScriptHandle : public TransferableHandle { public: using DontFreezeInstance = void; explicit ScriptHandle(RemoteHandle script); static auto Definition() -> v8::Local; auto TransferOut() -> std::unique_ptr final; auto Release() -> v8::Local; template auto Run(ContextHandle& context_handle, v8::MaybeLocal maybe_options) -> v8::Local; private: class ScriptHandleTransferable : public Transferable { public: explicit ScriptHandleTransferable(RemoteHandle script); auto TransferIn() -> v8::Local final; private: RemoteHandle script; }; RemoteHandle script; }; } // namespace ivm