tor-browser

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

bug739402.js (3224B)


      1 // |jit-test| slow;
      2 
      3 // Binary: cache/js-dbg-32-be41973873db-linux
      4 // Flags: --ion-eager
      5 //
      6 function MersenneTwister19937() {
      7  N = 624;
      8  var M = 397;
      9  MATRIX_A = 567483615;
     10  UPPER_MASK = 2147483648;
     11  var LOWER_MASK = 767;
     12  mt = Array();
     13  function unsigned32(n1) {
     14    return n1 < 0 ? (n1 ^ UPPER_MASK) + UPPER_MASK : n1;
     15  }
     16  function addition32(n1, n2) {
     17    return unsigned32(n1 + n2 & 4294967295);
     18  }
     19  function multiplication32(n1, n2) {
     20    sum = 0;
     21    for (i = 0; i < 32; ++i) {
     22      if (n1 >> i & 1) {
     23        sum = addition32(sum, unsigned32(n2 << i));
     24      }
     25    }
     26    return sum;
     27  }
     28  this.init_genrand = function() {
     29    for (mti = 1; mti < N; mti++) {
     30      mt[mti] = addition32(multiplication32(181433253, unsigned32(mt[mti - 1] ^ mt[mti - 1] >>> 30)), mti);
     31    }
     32  };
     33  this.genrand_int32 = function() {
     34    mag01 = Array(0, MATRIX_A);
     35    if (mti > N) {
     36      for (kk = 0; kk < N - M; kk++) {
     37        y = unsigned32(mt[kk] & UPPER_MASK | mt[kk + 1] & LOWER_MASK);
     38      }
     39      for (; kk < N; kk++) {
     40        mt[kk] = unsigned32(mt[kk + (M - N)] ^ y >>> 1 ^ mag01[y & 1]);
     41      }
     42      mti = 0;
     43    }
     44    y = mt[mti++];
     45    return y;
     46  };
     47 }
     48 (function() {
     49  var fuzzMT = new MersenneTwister19937;
     50  fuzzSeed = 4;
     51  fuzzMT.init_genrand(fuzzSeed);
     52  rnd = function(n) {
     53    var x = fuzzMT.genrand_int32() * 2.2e-10;
     54    return Math.floor(x * n);
     55  };
     56 }());
     57 
     58 function rndElt(a) {
     59  return a[rnd(a.length)];
     60 }
     61 varBinderFor = ["", "t", ""];
     62 function forLoopHead(d, b, v, reps) {
     63  var sInit = rndElt(varBinderFor) + v + "=0";
     64  var sCond = v + "<" + reps;
     65  sNext = "++" + v;
     66  return "for(" + sInit + ";" + sCond + ";" + sNext + ")";
     67 }
     68 function makeBranchUnstableLoop(d, b) {
     69  var reps = rnd(rnd(9));
     70  v = uniqueVarName();
     71  var mod = rnd();
     72  target = rnd(mod);
     73  return "" + forLoopHead(d, b, v, reps) + "{" + "if(" + v + "%" + mod + "==" + target + "){" + makeStatement(d - 2, b) + "}" + "{" + makeStatement(d - 2) + "}" + "}";
     74 }
     75 function weighted(wa) {
     76  a = [];
     77  for (var i = 0; i < wa.length; ++i) {
     78    for (var j = 0; j < wa[i].w; ++j) {
     79      a.push(wa[i].fun);
     80    }
     81  }
     82  return a;
     83 }
     84 statementMakers = weighted([{
     85  w: 6,
     86  fun: makeBranchUnstableLoop
     87 }, {}]);
     88 (function() {
     89  builderStatementMakers = weighted([{
     90    w: 1,
     91    fun: function() {
     92      return "gc()";
     93    }
     94  }, {
     95    w: 10,
     96    fun: function() {}
     97  }]);
     98  makeBuilderStatement = function() {
     99    return rndElt(builderStatementMakers)();
    100  };
    101 }());
    102 function uniqueVarName() {
    103  for (i = 0; i < 6; ++i) {
    104    s = String.fromCharCode(97 + rnd(6));
    105  }
    106  return s;
    107 }
    108 function makeLittleStatement(d) {
    109  rnd(0);
    110  if (rnd) {
    111    rndElt(littleStatementMakers)();
    112  }
    113 }
    114 littleStatementMakers = [function() {}];
    115 function testOne() {
    116  var code = makeOv(10);
    117  tryItOut(code);
    118 }
    119 function makeStatement(d, b) {
    120  if (rnd(0)) {}
    121  if (rnd(2)) {
    122    return makeBuilderStatement();
    123  }
    124  d < 6 && rnd() == 0;
    125  if (d < rnd(8)) {
    126    return makeLittleStatement();
    127  }
    128  return rndElt(statementMakers)(d, b);
    129 }
    130 function makeOv(d, B) {
    131  if (rnd() == 0) {}
    132  return "" + makeStatement(d, [""]);
    133 }
    134 function tryItOut(code) {
    135  try {
    136    f = Function(code);
    137    f();
    138  } catch (r) {}
    139 }
    140 for (let aa = 0; aa < 9999; aa++) {
    141  testOne();
    142 }