WebAssemblyInstance.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. namespace Js
  7. {
  8. class WebAssemblyInstance : public DynamicObject
  9. {
  10. public:
  11. class EntryInfo
  12. {
  13. public:
  14. static FunctionInfo NewInstance;
  15. };
  16. static Var NewInstance(RecyclableObject* function, CallInfo callInfo, ...);
  17. static bool Is(Var aValue);
  18. static WebAssemblyInstance * FromVar(Var aValue);
  19. static WebAssemblyInstance * CreateInstance(WebAssemblyModule * module, Var importObject);
  20. private:
  21. WebAssemblyInstance(WebAssemblyModule * wasmModule, DynamicType * type);
  22. static void LoadDataSegs(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  23. static void LoadFunctions(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  24. static Var BuildObject(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  25. static void LoadImports(WebAssemblyModule * wasmModule, ScriptContext* ctx, Var ffi, WebAssemblyEnvironment* env);
  26. static void LoadGlobals(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  27. static void LoadIndirectFunctionTable(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  28. static void ValidateTableAndMemory(WebAssemblyModule * wasmModule, ScriptContext* ctx, WebAssemblyEnvironment* env);
  29. Field(WebAssemblyModule *) m_module;
  30. };
  31. } // namespace Js