summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/gc/regress-1633355.js
blob: 97c611efd87c70e7efae1e6f141bd50285b18ddf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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)