blob: 76cf241e8da22b41f701c13a08af777a518d0df4 (
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
|
// |jit-test| skip-if: !('oomTest' in this)
// 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});
|