gc-3.js (537B)
1 // Test with suspended stack and promises references are lost. 2 3 let s; 4 const suspending = new WebAssembly.Suspending(() => (s = new Promise(() => {}))); 5 const ins = wasmEvalText(`(module 6 (import "" "s" (func $imp)) 7 (func (export "f") 8 call $imp 9 ) 10 )`, {"": {s: suspending,}}); 11 const promising = WebAssembly.promising(ins.exports.f); 12 let p = promising(); 13 14 // Check if suspending and promising promises were collected. 15 addMarkObservers([s, p]); 16 s = p = null; 17 gc(); 18 assertEq(getMarks()[0], 'dead'); 19 assertEq(getMarks()[1], 'dead');