js/src/jit-test/tests/auto-regress/bug739402.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // |jit-test| slow;
     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 }());
    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 }

mercurial