blob: 4fed89170f0006e2b0c4d2943775f140da85c0c3 (
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
|
// |jit-test| error:all-jobs-completed-successfully
// Verifiy that a breakpoints force-return queues the promise microtask to run
// in the debuggee's job queue, not the debugger's
// AutoDebuggerJobQueueInterruption.
let g = newGlobal({ newCompartment: true });
g.eval(`
async function asyncFn(x) {
await Promise.resolve();
debugger;
}
function enterDebuggee(){}
`);
const dbg = new Debugger(g);
(async function() {
let it = g.asyncFn();
// Force-return when the await resumes and steps.
dbg.onEnterFrame = frame => {
dbg.onEnterFrame = undefined;
const bps = frame.script.getPossibleBreakpoints({ line: 4 });
assertEq(bps.length, 1);
frame.script.setBreakpoint(bps[0].offset, {
hit: () => ({ return: "exit" })
});
};
const result = await it;
assertEq(result, "exit");
// If execution here is resumed from the debugger's queue, this call will
// trigger DebuggeeWouldRun exception.
g.enterDebuggee();
throw "all-jobs-completed-successfully";
})();
|