summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/baseline/bug1209585.js
blob: 6873fe37d525c6d6e74ecb5eedd868dab26577ce (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
31
32
33
34
35
36
37
38
// |jit-test| skip-if: helperThreadCount() === 0 || !('oomAtAllocation' in this)

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");
}