summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/saved-stacks/bug-1640034-dbg-eval-across-compartments.js
blob: 73c4dc9621efbd0a096db778f70869ba5065bdef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 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;`);