function g1(x) { return x + 1; } function f1() { var y = 0; for (var i=0; i<100; i++) { y += g1(g1(i)); } return y; } g1(10); assertEq(f1(), 5150); x = 1; other = newGlobal("same-compartment"); other.eval("f = function() { return x; }; x = 2;"); h = other.f; function testOtherGlobal() { var y = 0; for (var i=0; i<100; i++) { y += h(); } return y; } h(); assertEq(testOtherGlobal(), 200); // Note: this test requires on On-Stack Invalidation. f2 = function() { return x; } function test2() { var y = 0; for (var i=0; i<50; i++) { y += f2(); } return y; } assertEq(test2(), 50); f2 = h; assertEq(test2(), 100);