• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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