tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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();