summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/gc/regress-1633355.js
diff options
context:
space:
mode:
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.js30
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)