| #ifndef SRC_NODE_WASM_WEB_API_H_ |
| #define SRC_NODE_WASM_WEB_API_H_ |
| |
| #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS |
| |
| #include "base_object-inl.h" |
| #include "v8.h" |
| |
| namespace node { |
| namespace wasm_web_api { |
| |
| // Wrapper for interacting with a v8::WasmStreaming instance from JavaScript. |
| class WasmStreamingObject final : public BaseObject { |
| public: |
| static v8::Local<v8::Function> Initialize(Environment* env); |
| |
| static void RegisterExternalReferences(ExternalReferenceRegistry* registry); |
| |
| void MemoryInfo(MemoryTracker* tracker) const override; |
| SET_MEMORY_INFO_NAME(WasmStreamingObject) |
| SET_SELF_SIZE(WasmStreamingObject) |
| |
| static v8::MaybeLocal<v8::Object> Create( |
| Environment* env, std::shared_ptr<v8::WasmStreaming> streaming); |
| |
| private: |
| WasmStreamingObject(Environment* env, v8::Local<v8::Object> object) |
| : BaseObject(env, object) { |
| MakeWeak(); |
| } |
| |
| ~WasmStreamingObject() override {} |
| |
| private: |
| static void New(const v8::FunctionCallbackInfo<v8::Value>& args); |
| static void SetURL(const v8::FunctionCallbackInfo<v8::Value>& args); |
| static void Push(const v8::FunctionCallbackInfo<v8::Value>& args); |
| static void Finish(const v8::FunctionCallbackInfo<v8::Value>& args); |
| static void Abort(const v8::FunctionCallbackInfo<v8::Value>& args); |
| |
| std::shared_ptr<v8::WasmStreaming> streaming_; |
| size_t wasm_size_ = 0; |
| }; |
| |
| // This is a v8::WasmStreamingCallback implementation that must be passed to |
| // v8::Isolate::SetWasmStreamingCallback when setting up the isolate in order to |
| // enable the WebAssembly.(compile|instantiate)Streaming APIs. |
| void StartStreamingCompilation(const v8::FunctionCallbackInfo<v8::Value>& args); |
| |
| } // namespace wasm_web_api |
| } // namespace node |
| |
| #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS |
| |
| #endif // SRC_NODE_WASM_WEB_API_H_ |