summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/job-queue-04.js
blob: 040f5874c073cf3be3ba5181555c0b4b3d88fa0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Bug 1527862: Don't assert that the Debugger drained its job queue unless we
// actually saved the debuggee's queue.

// Put a job in the queue.
Promise.resolve(42).then(() => {});

var g = newGlobal({ newCompartment: true });
var dbg = new Debugger(g);
dbg.onNewScript = script => {};

// Cause an OOM while initializing the AutoDebuggerJobQueueInterruption, so that
// the destructor is run on an uninitialized instance.
//
// A properly initialized AutoDebuggerJobQueueInterruption asserts that the
// debugger left its job queue entry, before restoring the debuggee's job queue
// that it saved when it was initialized. But if OOM interrupts initialization,
// the job queue left on the JSContext is still the debuggee's, which we have no
// reason to expect is empty, so we shouldn't make any assertions about its
// state. The assertion must be conditional on proper initialization (and use
// the correct condition).
oomTest(() => {
    g.eval("(function() {})");
}, {expectExceptionOnFailure: false});