blob: 7d0c5b134d4063623f95eb92459c177c227fa362 (
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
33
34
35
36
37
38
39
40
|
// The value of frame.environment is the same Environment object at different
// times within a single visit to a scope.
var g = newGlobal({newCompartment: true});
var dbg = Debugger(g);
g.eval("function h() { debugger; }");
var hits, env;
dbg.onDebuggerStatement = function (hframe) {
var frame = hframe.older;
var e = frame.environment;
// frame.environment is at least cached from one moment to the next.
assertEq(e, frame.environment);
// frame.environment is cached from statement to statement within a call frame.
if (env === undefined)
env = e;
else
assertEq(e, env);
hits++;
};
hits = 0;
env = undefined;
g.eval("function f() { (function () { var i = 0; h(); var j = 2; h(); })(); }");
g.f();
assertEq(hits, 2);
hits = 0;
env = undefined;
g.eval("function f2() { { let i = 0; h(); let j = 2; h(); } }");
g.f2();
assertEq(hits, 2);
hits = 0;
env = undefined;
g.eval("function f3() { { let i; for (i = 0; i < 2; i++) h(); } }");
g.f3();
assertEq(hits, 2);
|