diff options
Diffstat (limited to 'js/src/jit-test/tests/wasm/gc/regress-1633355.js')
-rw-r--r-- | js/src/jit-test/tests/wasm/gc/regress-1633355.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/gc/regress-1633355.js b/js/src/jit-test/tests/wasm/gc/regress-1633355.js new file mode 100644 index 0000000000..97c611efd8 --- /dev/null +++ b/js/src/jit-test/tests/wasm/gc/regress-1633355.js @@ -0,0 +1,30 @@ +// |jit-test| skip-if: !wasmGcEnabled() || wasmCompileMode().includes("ion") + +load(libdir + "asserts.js"); + +var g23 = newGlobal({newCompartment: true}); +g23.parent = this; +g23.eval(` + var dbg = new Debugger(parent); + dbg.onEnterFrame = function(frame) {} +`); +let bin = wasmTextToBinary(` + (type $wabbit (struct + (field $x (mut i32)) + (field $left (mut (ref null $wabbit))) + (field $right (mut (ref null $wabbit))) + )) + (global $g (mut (ref null $wabbit)) (ref.null $wabbit)) + (func (export "init") (param $n i32) + (global.set $g (call $make (local.get $n))) + ) + (func $make (param $n i32) (result (ref null $wabbit)) + (local $tmp i32) + (struct.new $wabbit (local.get $tmp) (ref.null $wabbit) (ref.null $wabbit)) + ) +`); +let mod = new WebAssembly.Module(bin); +let ins = new WebAssembly.Instance(mod).exports; + +// Debugger can handle non-exposable fields, like (ref T). +ins.init(6) |