diff --git a/js/src/jit-test/tests/wasm/gc/anyref.js b/js/src/jit-test/tests/wasm/gc/anyref.js index d06b2154755a..4b702bb44832 100644 --- a/js/src/jit-test/tests/wasm/gc/anyref.js +++ b/js/src/jit-test/tests/wasm/gc/anyref.js @@ -150,6 +150,12 @@ ref = exports.nested(baguette, 0); assertEq(ref, baguette); assertEq(ref.calories, baguette.calories); +if (wasmDebuggingIsSupported()) { + let g = newGlobal(); + let dbg = new Debugger(g); + g.eval(`o = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary('(module (func (result anyref) (param anyref) get_local 0) (export "" 0))')));`); +} + // More interesting use cases about control flow joins. function assertJoin(body) { diff --git a/js/src/wasm/WasmBaselineCompile.cpp b/js/src/wasm/WasmBaselineCompile.cpp index 3ef4a5693a97..ca20efb15a91 100644 --- a/js/src/wasm/WasmBaselineCompile.cpp +++ b/js/src/wasm/WasmBaselineCompile.cpp @@ -3429,6 +3429,9 @@ class BaseCompiler final : public BaseCompilerInterface case ExprType::F32: masm.storeFloat32(RegF32(ReturnFloat32Reg), resultsAddress); break; + case ExprType::AnyRef: + masm.storePtr(RegPtr(ReturnReg), resultsAddress); + break; default: MOZ_CRASH("Function return type"); } @@ -3453,6 +3456,9 @@ class BaseCompiler final : public BaseCompilerInterface case ExprType::F32: masm.loadFloat32(resultsAddress, RegF32(ReturnFloat32Reg)); break; + case ExprType::AnyRef: + masm.loadPtr(resultsAddress, RegPtr(ReturnReg)); + break; default: MOZ_CRASH("Function return type"); }