Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: helperThreadCount() === 0
gczeal(0);
let lfPreamble = `
var lfOffThreadGlobal = newGlobal({newCompartment: true});
for (lfLocal in this)
try {} catch(lfVare5) {}
`;
evaluate(lfPreamble);
evaluate(`
var g = newGlobal({newCompartment: true});
var dbg = new Debugger;
var gw = dbg.addDebuggee(g);
for (lfLocal in this)
if (!(lfLocal in lfOffThreadGlobal))
try {
lfOffThreadGlobal[lfLocal] = this[lfLocal];
} catch(lfVare5) {}
var g = newGlobal({newCompartment: true});
var gw = dbg.addDebuggee(g);
`);
lfOffThreadGlobal.offThreadCompileToStencil(`
setMarkStackLimit(1);
grayRoot()[0] = "foo";
`);
var stencil = lfOffThreadGlobal.finishOffThreadStencil();
lfOffThreadGlobal.evalStencil(stencil);
eval(`
var lfOffThreadGlobal = newGlobal({newCompartment: true});
try { evaluate(\`
gczeal(18, 1);
grayRoot()[0] = "foo";
let inst = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(
\\\`(module
(memory (export "memory") 1 1)
)\\\`
)));
\`); } catch(exc) {}
`);