1 #ifndef SRC_NODE_WASM_WEB_API_H_ 2 #define SRC_NODE_WASM_WEB_API_H_ 3 4 #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 5 6 #include "base_object-inl.h" 7 #include "v8.h" 8 9 namespace node { 10 namespace wasm_web_api { 11 12 // Wrapper for interacting with a v8::WasmStreaming instance from JavaScript. 13 class WasmStreamingObject final : public BaseObject { 14 public: 15 static v8::Local<v8::Function> Initialize(Environment* env); 16 17 static void RegisterExternalReferences(ExternalReferenceRegistry* registry); 18 19 void MemoryInfo(MemoryTracker* tracker) const override; 20 SET_MEMORY_INFO_NAME(WasmStreamingObject) 21 SET_SELF_SIZE(WasmStreamingObject) 22 23 static v8::MaybeLocal<v8::Object> Create( 24 Environment* env, std::shared_ptr<v8::WasmStreaming> streaming); 25 26 private: WasmStreamingObject(Environment * env,v8::Local<v8::Object> object)27 WasmStreamingObject(Environment* env, v8::Local<v8::Object> object) 28 : BaseObject(env, object) { 29 MakeWeak(); 30 } 31 ~WasmStreamingObject()32 ~WasmStreamingObject() override {} 33 34 private: 35 static void New(const v8::FunctionCallbackInfo<v8::Value>& args); 36 static void SetURL(const v8::FunctionCallbackInfo<v8::Value>& args); 37 static void Push(const v8::FunctionCallbackInfo<v8::Value>& args); 38 static void Finish(const v8::FunctionCallbackInfo<v8::Value>& args); 39 static void Abort(const v8::FunctionCallbackInfo<v8::Value>& args); 40 41 std::shared_ptr<v8::WasmStreaming> streaming_; 42 size_t wasm_size_ = 0; 43 }; 44 45 // This is a v8::WasmStreamingCallback implementation that must be passed to 46 // v8::Isolate::SetWasmStreamingCallback when setting up the isolate in order to 47 // enable the WebAssembly.(compile|instantiate)Streaming APIs. 48 void StartStreamingCompilation(const v8::FunctionCallbackInfo<v8::Value>& args); 49 50 } // namespace wasm_web_api 51 } // namespace node 52 53 #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 54 55 #endif // SRC_NODE_WASM_WEB_API_H_ 56