1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/ion/bindname.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,53 @@ 1.4 +// Test the scope chain walk. 1.5 +function test1() { 1.6 + var x = 0; 1.7 + function f1(addprop) { 1.8 + function f2() { 1.9 + eval(""); 1.10 + function f3() { 1.11 + eval(""); 1.12 + function f4() { 1.13 + for (var i=0; i<100; i++) { 1.14 + x = x + i; 1.15 + } 1.16 + } 1.17 + return f4; 1.18 + } 1.19 + return f3(); 1.20 + } 1.21 + var g = f2(); 1.22 + g(); 1.23 + if (addprop) 1.24 + eval("var a1 = 3; var x = 33;"); 1.25 + g(); 1.26 + if (addprop) 1.27 + assertEq(x, 4983); 1.28 + return f2(); 1.29 + } 1.30 + 1.31 + var g = f1(true); 1.32 + g(); 1.33 + g = f1(false); 1.34 + eval("var y = 2020; var z = y + 3;"); 1.35 + g(); 1.36 + return x; 1.37 +} 1.38 +assertEq(test1(), 19800); 1.39 + 1.40 +// Test with non-cacheable objects on the scope chain. 1.41 +function test2(o) { 1.42 + var x = 0; 1.43 + with ({}) { 1.44 + with (o) { 1.45 + var f = function() { 1.46 + for (var i=0; i<100; i++) { 1.47 + x++; 1.48 + } 1.49 + }; 1.50 + } 1.51 + } 1.52 + f(); 1.53 + assertEq(o.x, 110); 1.54 + assertEq(x, 0); 1.55 +} 1.56 +test2({x: 10});