/
githubmirror
/
node
Обзор
Документация
Войти
/
githubmirror
/
node
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
deps/v8/src/wasm/wasm-js.h
117 строк
4 KB
Matthias Liedtke
deps: V8: cherry-pick 435a2cdf664c
12 май 2026, 18:48
12 май 2026, 18:48
678b46a
Код
Авторство
О чём код?
// Copyright 2015 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_WASM_WASM_JS_H_ #define V8_WASM_WASM_JS_H_ #if !V8_ENABLE_WEBASSEMBLY #error This header should only be included if WebAssembly is enabled. #endif // !V8_ENABLE_WEBASSEMBLY #include <memory> #include "src/common/globals.h" #include "src/wasm/wasm-features.h" namespace v8 { class Value; template <typename T> class FunctionCallbackInfo; class WasmStreaming; } // namespace v8 namespace v8::internal { namespace wasm { class CompilationResultResolver; class StreamingDecoder; V8_EXPORT_PRIVATE std::unique_ptr<WasmStreaming> StartStreamingForTesting( Isolate*, std::shared_ptr<wasm::CompilationResultResolver>); #define WASM_JS_EXTERNAL_REFERENCE_LIST(V) \ V(WebAssemblyCompile) \ V(WebAssemblyException) \ V(WebAssemblyExceptionGetArg) \ V(WebAssemblyExceptionGetStack) \ V(WebAssemblyExceptionIs) \ V(WebAssemblyGlobal) \ V(WebAssemblyGlobalGetValue) \ V(WebAssemblyGlobalSetValue) \ V(WebAssemblyGlobalValueOf) \ V(WebAssemblyInstance) \ V(WebAssemblyInstanceGetExports) \ V(WebAssemblyInstantiate) \ V(WebAssemblyMemory) \ V(WebAssemblyMemoryMapDescriptor) \ V(WebAssemblyMemoryGetBuffer) \ V(WebAssemblyMemoryGrow) \ V(WebAssemblyMemoryMapDescriptorMap) \ V(WebAssemblyMemoryMapDescriptorUnmap) \ V(WebAssemblyMemoryToFixedLengthBuffer) \ V(WebAssemblyMemoryToResizableBuffer) \ V(WebAssemblyModule) \ V(WebAssemblyModuleCustomSections) \ V(WebAssemblyModuleExports) \ V(WebAssemblyModuleImports) \ V(WebAssemblyTable) \ V(WebAssemblyTableGet) \ V(WebAssemblyTableGetLength) \ V(WebAssemblyTableGrow) \ V(WebAssemblyTableSet) \ V(WebAssemblyTag) \ V(WebAssemblySuspending) \ V(WebAssemblyValidate) #define DECL_WASM_JS_EXTERNAL_REFERENCE(Name) \ V8_EXPORT_PRIVATE void Name(const v8::FunctionCallbackInfo<v8::Value>& info); WASM_JS_EXTERNAL_REFERENCE_LIST(DECL_WASM_JS_EXTERNAL_REFERENCE) #undef DECL_WASM_JS_EXTERNAL_REFERENCE } // namespace wasm // Exposes a WebAssembly API to JavaScript through the V8 API. class WasmJs { public: // Creates all API objects before the snapshot is serialized. V8_EXPORT_PRIVATE static void PrepareForSnapshot(Isolate* isolate); // Finalizes API object setup: // - installs the WebAssembly object on the global object (depending on // flags), and // - creates API objects and properties that depend on runtime-enabled flags. V8_EXPORT_PRIVATE static void Install(Isolate* isolate); // Extend the API based on late-enabled features, mostly from origin trial. V8_EXPORT_PRIVATE static void InstallConditionalFeatures( Isolate* isolate, DirectHandle<NativeContext> context); // Parse compile time imports from a given argument. V8_EXPORT_PRIVATE static wasm::CompileTimeImports CompileTimeImportsFromArgument(DirectHandle<Object> arg, Isolate*, wasm::WasmEnabledFeatures); private: V8_EXPORT_PRIVATE static void InstallModule( Isolate* isolate, DirectHandle<JSObject> webassembly); V8_EXPORT_PRIVATE static void InstallMemoryControl( Isolate* isolate, DirectHandle<NativeContext> context, DirectHandle<JSObject> webassembly); V8_EXPORT_PRIVATE static bool InstallTypeReflection( Isolate* isolate, DirectHandle<NativeContext> context, DirectHandle<JSObject> webassembly); V8_EXPORT_PRIVATE static bool InstallJSPromiseIntegration( Isolate* isolate, DirectHandle<NativeContext> context, DirectHandle<JSObject> webassembly); V8_EXPORT_PRIVATE static void InstallResizableBufferIntegration( Isolate* isolate, DirectHandle<NativeContext> context, DirectHandle<JSObject> webassembly); }; } // namespace v8::internal #endif // V8_WASM_WASM_JS_H_