| // Eval-in-frame with different type on baseline frame with let-scoping |
| |
| load(libdir + "jitopts.js"); |
| |
| if (!jitTogglesMatch(Opts_BaselineEager)) |
| quit(0); |
| |
| withJitOptions(Opts_BaselineEager, function () { |
| var g = newGlobal(); |
| var dbg = new Debugger; |
| |
| g.h = function h(d) { |
| if (d) { |
| dbg.addDebuggee(g); |
| var f = dbg.getNewestFrame().older; |
| assertEq(f.implementation, "baseline"); |
| assertEq(f.environment.getVariable("foo"), 42); |
| f.eval("foo = 'string of 42'"); |
| } |
| } |
| |
| g.eval("" + function f(d) { |
| if (d) { |
| let foo = 42; |
| g(d); |
| return foo; |
| } |
| }); |
| |
| g.eval("" + function g(d) { h(d); }); |
| |
| g.eval("(" + function () { assertEq(f(true), "string of 42"); } + ")();"); |
| }); |