fun-call-bound-inline-native-3.js (1478B)
1 // Test inlining bound natives through Function.prototype.call 2 // 3 // Array() is inlined when there are 0-1 arguments. 4 5 function arrayThisAbsent() { 6 var Arr = Array.bind(); 7 for (let i = 0; i < 400; ++i) { 8 let r = Arr.call(); 9 assertEq(r.length, 0); 10 } 11 } 12 for (let i = 0; i < 2; ++i) arrayThisAbsent(); 13 14 function array0() { 15 var Arr = Array.bind(); 16 for (let i = 0; i < 400; ++i) { 17 let r = Arr.call(null); 18 assertEq(r.length, 0); 19 } 20 } 21 for (let i = 0; i < 2; ++i) array0(); 22 23 function array0bound1() { 24 var Arr = Array.bind(null, 3); 25 for (let i = 0; i < 400; ++i) { 26 let r = Arr.call(null); 27 assertEq(r.length, 3); 28 } 29 } 30 for (let i = 0; i < 2; ++i) array0bound1(); 31 32 function array1() { 33 var Arr = Array.bind(); 34 for (let i = 0; i < 400; ++i) { 35 let r = Arr.call(null, 5); 36 assertEq(r.length, 5); 37 } 38 } 39 for (let i = 0; i < 2; ++i) array1(); 40 41 function array1bound1() { 42 var Arr = Array.bind(null, 3); 43 for (let i = 0; i < 400; ++i) { 44 let r = Arr.call(null, 5); 45 assertEq(r.length, 2); 46 } 47 } 48 for (let i = 0; i < 2; ++i) array1bound1(); 49 50 function array2() { 51 var Arr = Array.bind(); 52 for (let i = 0; i < 400; ++i) { 53 let r = Arr.call(null, 5, 10); 54 assertEq(r.length, 2); 55 } 56 } 57 for (let i = 0; i < 2; ++i) array2(); 58 59 function array2bound4() { 60 var Arr = Array.bind(null, 3, 4, 5, 6); 61 for (let i = 0; i < 400; ++i) { 62 let r = Arr.call(null, 5, 10); 63 assertEq(r.length, 6); 64 } 65 } 66 for (let i = 0; i < 2; ++i) array2bound4();