/js/src/jit-test/tests/debug/Frame-onStep-04.js
http://github.com/zpao/v8monkey · JavaScript · 34 lines · 24 code · 4 blank · 6 comment · 1 complexity · ea7b136642d1dc3017171a5fefbf9b18 MD5 · raw file
- // When a recursive function has many frames on the stack, onStep may be set or
- // not independently on each frame.
- var g = newGlobal('new-compartment');
- g.eval("function f(x) {\n" +
- " if (x > 0)\n" +
- " f(x - 1);\n" +
- " else\n" +
- " debugger;\n" +
- " return x;\n" +
- "}");
- var dbg = Debugger(g);
- var seen = [0, 0, 0, 0, 0, 0, 0, 0];
- function step() {
- seen[this.arguments[0]] = 1;
- }
- dbg.onEnterFrame = function (frame) {
- // Turn on stepping for even-numbered frames.
- var x = frame.arguments[0];
- if (x % 2 === 0)
- frame.onStep = step;
- };
- dbg.onDebuggerStatement = function (frame) {
- // This is called with 8 call frames on the stack, 7 down to 0.
- // At this point we should have seen all the even-numbered frames.
- assertEq(seen.join(""), "10101010");
- // Now reset seen to see which frames fire onStep on the way out.
- seen = [0, 0, 0, 0, 0, 0, 0, 0];
- };
- g.f(7);
- assertEq(seen.join(""), "10101010");