function-length.js (1035B)
1 function interpreted() { 2 for (var i = 0; i < 50; i++) { 3 var f = function () {}; 4 assertEq(f.length, 0); 5 } 6 7 for (var i = 0; i < 50; i++) { 8 var f = function (a, b) {}; 9 assertEq(f.length, 2); 10 } 11 } 12 13 function bound() { 14 for (var i = 0; i < 50; i++) { 15 var f = (function () {}).bind({}); 16 assertEq(f.length, 0); 17 } 18 19 for (var i = 0; i < 50; i++) { 20 var f = (function (a, b) {}).bind({}); 21 assertEq(f.length, 2); 22 } 23 } 24 25 function native() { 26 for (var i = 0; i < 50; i++) { 27 // Use the interpreted function for getting the IC generated in the first place. 28 var f = function (a) {}; 29 30 if (i == 15) { 31 f = Math.sin; 32 } else if (i == 20) { 33 f = Math.cos; 34 } else if (i == 25) { 35 f = Math.ceil; 36 } else if (i == 30) { 37 f = Math.tan; 38 } else if (i == 35) { 39 f = Math.tanh; 40 } 41 42 assertEq(f.length, 1); 43 } 44 } 45 46 interpreted(); 47 bound(); 48 native();