tor-browser

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

bool-property-key.js (867B)


      1 // To prevent constant-folding.
      2 let bTrue = true;
      3 let bFalse = false;
      4 
      5 function testMonomorphic() {
      6  var obj = { true: 1, false: 2 };
      7  for (var i = 0; i < 40; i++) {
      8    obj[bTrue] = 1 + obj[bTrue];
      9    obj[bFalse] = 2 + obj[bFalse];
     10    var bool = (i & 1) === 1;
     11    obj[bool] = 3 + obj[bool];
     12  }
     13  assertEq(obj.true, 101);
     14  assertEq(obj.false, 142);
     15 }
     16 testMonomorphic();
     17 
     18 function testMegamorphic() {
     19  var arr = [];
     20  for (var i = 0; i < 50; i++) {
     21    arr.push({ true: i, ["x" + i]: i * 2, false: i * 3 });
     22  }
     23  var trues = 0;
     24  var falses = 0;
     25  var mixed = 0;
     26  for (var i = 0; i < 100; i++) {
     27    var obj = arr[i % arr.length];
     28    trues += obj[bTrue];
     29    falses += obj[bFalse];
     30    var bool = (i & 1) === 1;
     31    mixed += obj[bool];
     32    obj[bool] += 1;
     33  }
     34  assertEq(trues, 2475);
     35  assertEq(falses, 7375);
     36  assertEq(mixed, 4900);
     37 }
     38 testMegamorphic();