Drop AsmJSOption and throwOnAsmJSValidationFailure plumbing from PrefableCompileOptions and ContextOptions, the createObjectForAsmJS hook on JS::WasmModule, the Failure_AsmJSNotSupported transcode result, objectsMallocHeapElementsAsmJS, the ASMJS/USE_ASM use counters and JSMSG_USE_ASM_* error messages, and the remaining asm.js mentions in ArrayBuffer.h and experimental/JSStencil.h. Update the embedders accordingly: xpconnect (XPCJSContext, XPCJSRuntime), dom/ipc/JSValidatorChild, dom/base/UseCounters.conf, the three javascript.options.asmjs* prefs in StaticPrefList.yaml, and the pref override in the devtools debugger mochitest browser.toml. Drop the now-dead asm.js implementations in wasm/WasmModule, frontend/Stencil, and shell/js. dom/base/use_counter_metrics.yaml was regenerated with `mach gen-use-counter-metrics` after removing the asm.js use counters from UseCounters.conf. Depends on D300555 Differential Revision: https://phabricator.services.mozilla.com/D300556
44 lines
1.6 KiB
C++
44 lines
1.6 KiB
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef js_WasmModule_h
|
|
#define js_WasmModule_h
|
|
|
|
#include "mozilla/RefPtr.h" // RefPtr
|
|
|
|
#include "jstypes.h" // JS_PUBLIC_API
|
|
|
|
#include "js/RefCounted.h" // AtomicRefCounted
|
|
#include "js/TypeDecls.h" // HandleObject
|
|
|
|
namespace JS {
|
|
|
|
/**
|
|
* The WasmModule interface allows the embedding to hold a reference to the
|
|
* underlying C++ implementation of a JS WebAssembly.Module object for purposes
|
|
* of efficient postMessage() and (de)serialization from a random thread.
|
|
*
|
|
* In particular, this allows postMessage() of a WebAssembly.Module:
|
|
* GetWasmModule() is called when making a structured clone of a payload
|
|
* containing a WebAssembly.Module object. The structured clone buffer holds a
|
|
* refcount of the JS::WasmModule until createObject() is called in the target
|
|
* agent's JSContext. The new WebAssembly.Module object continues to hold the
|
|
* JS::WasmModule and thus the final reference of a JS::WasmModule may be
|
|
* dropped from any thread and so the virtual destructor (and all internal
|
|
* methods of the C++ module) must be thread-safe.
|
|
*/
|
|
|
|
struct WasmModule : js::AtomicRefCounted<WasmModule> {
|
|
virtual ~WasmModule() = default;
|
|
virtual JSObject* createObject(JSContext* cx) const = 0;
|
|
};
|
|
|
|
extern JS_PUBLIC_API bool IsWasmModuleObject(HandleObject obj);
|
|
|
|
extern JS_PUBLIC_API RefPtr<WasmModule> GetWasmModule(HandleObject obj);
|
|
|
|
} // namespace JS
|
|
|
|
#endif /* js_WasmModule_h */
|