blob: d429b3fb6a3ca93252db771dc34dbd3b07b25b85 (
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
|
var evalInFrame = (function (global) {
var dbgGlobal = newGlobal({newCompartment: true});
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);
|