Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: helperThreadCount() === 0
if ("gczeal" in this)
gczeal(0);
eval("g=function() {}")
var lfGlobal = newGlobal();
for (lfLocal in this) {
if (!(lfLocal in lfGlobal)) {
lfGlobal[lfLocal] = this[lfLocal];
}
}
lfGlobal.offThreadCompileToStencil(`
if (!("oomAtAllocation" in this && "resetOOMFailure" in this))
gczeal(0);
function oomTest(f) {
var i = 1;
do {
try {
oomAtAllocation(i);
f();
more = resetOOMFailure();
} catch (e) {
more = resetOOMFailure();
}
i++;
} while(more);
}
var g = newGlobal();
oomTest(function() { new revocable(); });
`);
try {
var stencil = lfGlobal.finishOffThreadStencil();
lfGlobal.evalStencil(stencil);
} catch(e) {
// This can happen if we OOM while bailing out in Ion.
assertEq(e, "out of memory");
}