Source code

Revision control

Copy as Markdown

Other Tools

// Make sure the getVariable/setVariable/eval functions work correctly with
// unaliased locals.
var g = newGlobal({newCompartment: true});
g.eval(`
function g() { debugger; };
function f(arg) {
var y = arg - 3;
var a1 = 1;
var a2 = 1;
var b = arg + 9;
var z = function() { return a1 + a2; };
g();
return y * b; // To prevent the JIT from optimizing out y and b.
};`);
var dbg = new Debugger(g);
dbg.onDebuggerStatement = function handleDebugger(frame) {
assertEq(frame.older.eval("y + b").return, 26);
assertEq(frame.older.environment.getVariable("y"), 7);
frame.older.environment.setVariable("b", 4);
assertEq(frame.older.eval("y + b").return, 11);
};
g.f(10);