blob: 9f725acec4eb449fd992ecf98cd69b11896d507e [file] [log] [blame]
var evalInFrame = (function (global) {
var dbgGlobal = newGlobal();
var dbg = new dbgGlobal.Debugger();
return function evalInFrame(upCount, code) {
dbg.addDebuggee(global);
// Skip ourself.
var frame = dbg.getNewestFrame().older;
for (var i = 0; i < upCount; i++) {
if (!frame.older)
break;
frame = frame.older;
}
var completion = frame.eval(code);
if (completion.return) {
var v = completion.return;
if (typeof v === "object")
v = v.unsafeDereference();
return v;
}
if (completion.throw) {
var v = completion.throw;
if (typeof v === "object")
v = v.unsafeDereference();
throw v;
}
if (completion === null)
terminate();
};
})(this);