1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/baseline/funcall.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,54 @@ 1.4 +function test1() { 1.5 + var f = function() { return 1; }; 1.6 + 1.7 + for (var i=0; i<25; i++) { 1.8 + f.call(); 1.9 + if (i > 20) 1.10 + f = Math.abs; 1.11 + } 1.12 +} 1.13 +test1(); 1.14 + 1.15 +var origCall = Function.prototype.call; 1.16 + 1.17 +function test2() { 1.18 + var f = function() { return 1; }; 1.19 + var c = 0; 1.20 + for (var i=0; i<25; i++) { 1.21 + f.call(); 1.22 + if (i > 20) 1.23 + Function.prototype.call = function() { c++; }; 1.24 + } 1.25 + assertEq(c, 3); 1.26 +} 1.27 +test2(); 1.28 +Function.prototype.call = origCall; 1.29 + 1.30 +function test3() { 1.31 + var f = function() { return 1; }; 1.32 + for (var i=0; i<25; i++) { 1.33 + f.call(); 1.34 + if (i > 20) 1.35 + Function.prototype.call = undefined; 1.36 + } 1.37 +} 1.38 +try { 1.39 + test3(); 1.40 + assertEq(0, 1); 1.41 +} catch(e) {} 1.42 + 1.43 +Function.prototype.call = origCall; 1.44 + 1.45 +function test4() { 1.46 + var f = function(a, b, c) { 1.47 + assertEq(arguments.length, 1); 1.48 + assertEq(a, 1); 1.49 + assertEq(b, undefined); 1.50 + assertEq(c, undefined); 1.51 + return 1; 1.52 + }; 1.53 + for (var i=0; i<25; i++) { 1.54 + f.call(null, 1); 1.55 + } 1.56 +} 1.57 +test4();