Source code

Revision control

Copy as Markdown

Other Tools

// This test ensures that capturing a stack works when the Debugger.Frame
// being used for an eval has an async stack on the activation between
// the two debuggee frames.
const global = newGlobal({ newCompartment: true });
const dbg = new Debugger(global);
dbg.onDebuggerStatement = function() {
const frame = dbg.getNewestFrame();
// Capturing this stack inside the debugger compartment will populate the
// LiveSavedFrameCache with a SavedFrame in the debugger compartment.
const opts = {
stack: saveStack(),
};
bindToAsyncStack(function() {
// This captured stack needs to properly invalidate the LiveSavedFrameCache
// for the frame and create a new one inside the debuggee compartment.
frame.eval(`saveStack()`);
}, opts)();
};
global.eval(`debugger;`);