fun-call-bound-inline-native-1.js (3871B)
1 // Test inlining bound natives through Function.prototype.call 2 // 3 // Math.min() is inlined when there are 1-4 arguments. 4 5 function mathMinThisAbsent() { 6 var MathMin = Math.min.bind(); 7 for (let i = 0; i < 400; ++i) { 8 let r = MathMin.call(); 9 assertEq(r, Infinity); 10 } 11 } 12 for (let i = 0; i < 2; ++i) mathMinThisAbsent(); 13 14 function mathMin0() { 15 var MathMin = Math.min.bind(); 16 for (let i = 0; i < 400; ++i) { 17 let r = MathMin.call(null); 18 assertEq(r, Infinity); 19 } 20 } 21 for (let i = 0; i < 2; ++i) mathMin0(); 22 23 function mathMin0Bound1() { 24 var MathMin = Math.min.bind(null, 0); 25 for (let i = 0; i < 400; ++i) { 26 let r = MathMin.call(null); 27 assertEq(r, 0); 28 } 29 } 30 for (let i = 0; i < 2; ++i) mathMin0Bound1(); 31 32 function mathMin0Bound2() { 33 var MathMin = Math.min.bind(null, 100, 50); 34 for (let i = 0; i < 400; ++i) { 35 let r = MathMin.call(null); 36 assertEq(r, 50); 37 } 38 } 39 for (let i = 0; i < 2; ++i) mathMin0Bound2(); 40 41 function mathMin0Bound3() { 42 var MathMin = Math.min.bind(null, 100, 50, 25); 43 for (let i = 0; i < 400; ++i) { 44 let r = MathMin.call(null); 45 assertEq(r, 25); 46 } 47 } 48 for (let i = 0; i < 2; ++i) mathMin0Bound3(); 49 50 function mathMin1() { 51 var MathMin = Math.min.bind(); 52 for (let i = 0; i < 400; ++i) { 53 let r = MathMin.call(null, i); 54 assertEq(r, i); 55 } 56 } 57 for (let i = 0; i < 2; ++i) mathMin1(); 58 59 function mathMin1Bound1() { 60 var MathMin = Math.min.bind(null, 200); 61 for (let i = 0; i < 400; ++i) { 62 let r = MathMin.call(null, i); 63 assertEq(r, Math.min(i, 200)); 64 } 65 } 66 for (let i = 0; i < 2; ++i) mathMin1Bound1(); 67 68 function mathMin1Bound3() { 69 var MathMin = Math.min.bind(null, 200, 150, 100); 70 for (let i = 0; i < 400; ++i) { 71 let r = MathMin.call(null, i); 72 assertEq(r, Math.min(i, 100)); 73 } 74 } 75 for (let i = 0; i < 2; ++i) mathMin1Bound3(); 76 77 function mathMin1Bound4() { 78 var MathMin = Math.min.bind(null, 200, 150, 100, 50); 79 for (let i = 0; i < 400; ++i) { 80 let r = MathMin.call(null, i); 81 assertEq(r, Math.min(i, 50)); 82 } 83 } 84 for (let i = 0; i < 2; ++i) mathMin1Bound4(); 85 86 function mathMin2() { 87 var MathMin = Math.min.bind(); 88 for (let i = 0; i < 400; ++i) { 89 let r = MathMin.call(null, i, i + 1); 90 assertEq(r, i); 91 } 92 } 93 for (let i = 0; i < 2; ++i) mathMin2(); 94 95 function mathMin2Bound1() { 96 var MathMin = Math.min.bind(null, 200); 97 for (let i = 0; i < 400; ++i) { 98 let r = MathMin.call(null, i, i + 1); 99 assertEq(r, Math.min(i, 200)); 100 } 101 } 102 for (let i = 0; i < 2; ++i) mathMin2Bound1(); 103 104 function mathMin3() { 105 var MathMin = Math.min.bind(); 106 for (let i = 0; i < 400; ++i) { 107 let r = MathMin.call(null, i, i + 1, i + 2); 108 assertEq(r, i); 109 } 110 } 111 for (let i = 0; i < 2; ++i) mathMin3(); 112 113 function mathMin3Bound1() { 114 var MathMin = Math.min.bind(null, 200); 115 for (let i = 0; i < 400; ++i) { 116 let r = MathMin.call(null, i, i + 1, i + 2); 117 assertEq(r, Math.min(i, 200)); 118 } 119 } 120 for (let i = 0; i < 2; ++i) mathMin3Bound1(); 121 122 function mathMin4() { 123 var MathMin = Math.min.bind(); 124 for (let i = 0; i < 400; ++i) { 125 let r = MathMin.call(null, i, i + 1, i + 2, i + 3); 126 assertEq(r, i); 127 } 128 } 129 for (let i = 0; i < 2; ++i) mathMin4(); 130 131 function mathMin4Bound1() { 132 var MathMin = Math.min.bind(null, 200); 133 for (let i = 0; i < 400; ++i) { 134 let r = MathMin.call(null, i, i + 1, i + 2, i + 3); 135 assertEq(r, Math.min(i, 200)); 136 } 137 } 138 for (let i = 0; i < 2; ++i) mathMin4Bound1(); 139 140 function mathMin5() { 141 var MathMin = Math.min.bind(); 142 for (let i = 0; i < 400; ++i) { 143 let r = MathMin.call(null, i, i + 1, i + 2, i + 3, i + 4); 144 assertEq(r, i); 145 } 146 } 147 for (let i = 0; i < 2; ++i) mathMin5(); 148 149 function mathMin5Bound1() { 150 var MathMin = Math.min.bind(null, 200); 151 for (let i = 0; i < 400; ++i) { 152 let r = MathMin.call(null, i, i + 1, i + 2, i + 3, i + 4); 153 assertEq(r, Math.min(i, 200)); 154 } 155 } 156 for (let i = 0; i < 2; ++i) mathMin5Bound1();