callgname.js (695B)
1 function g1(x) { 2 return x + 1; 3 } 4 function f1() { 5 var y = 0; 6 for (var i=0; i<100; i++) { 7 y += g1(g1(i)); 8 } 9 return y; 10 } 11 g1(10); 12 assertEq(f1(), 5150); 13 14 x = 1; 15 other = newGlobal("same-compartment"); 16 other.eval("f = function() { return x; }; x = 2;"); 17 18 h = other.f; 19 20 function testOtherGlobal() { 21 var y = 0; 22 for (var i=0; i<100; i++) { 23 y += h(); 24 } 25 return y; 26 } 27 h(); 28 assertEq(testOtherGlobal(), 200); 29 30 // Note: this test requires on On-Stack Invalidation. 31 f2 = function() { 32 return x; 33 } 34 function test2() { 35 var y = 0; 36 for (var i=0; i<50; i++) { 37 y += f2(); 38 } 39 return y; 40 } 41 assertEq(test2(), 50); 42 f2 = h; 43 assertEq(test2(), 100);