WebAssemblyInstance.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #pragma once
  6. #ifdef ENABLE_WASM
  7. namespace Js
  8. {
  9. class WebAssemblyInstance : public DynamicObject
  10. {
  11. protected:
  12. DEFINE_VTABLE_CTOR(WebAssemblyInstance, DynamicObject);
  13. DEFINE_MARSHAL_OBJECT_TO_SCRIPT_CONTEXT(WebAssemblyInstance);
  14. public:
  15. class EntryInfo
  16. {
  17. public:
  18. static FunctionInfo NewInstance;
  19. static FunctionInfo GetterExports;
  20. };
  21. static Var NewInstance(RecyclableObject* function, CallInfo callInfo, ...);
  22. static Var GetterExports(RecyclableObject* function, CallInfo callInfo, ...);
  23. static bool Is(Var aValue);
  24. static WebAssemblyInstance * FromVar(Var aValue);
  25. static WebAssemblyInstance * UnsafeFromVar(Var aValue);
  26. static WebAssemblyInstance * CreateInstance(WebAssemblyModule * module, Var importObject);
  27. private:
  28. WebAssemblyInstance(WebAssemblyModule * wasmModule, DynamicType * type);
  29. static void InitializeDataSegs(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  30. static void CreateWasmFunctions(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  31. static Var CreateExportObject(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  32. static void LoadImports(WebAssemblyModule * wasmModule, ScriptContext* ctx, Var ffi, WebAssemblyEnvironment* env);
  33. static void InitialGlobals(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  34. static void InitializeFunctionTable(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  35. static void ValidateTableAndMemory(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  36. Field(WebAssemblyModule *) m_module;
  37. Field(Js::Var) m_exports;
  38. };
  39. } // namespace Js
  40. #endif