tor-browser

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

regress-456826.js (3045B)


      1 // |reftest| skip-if(!xulRuntime.shell||Android) slow -- bug 504632
      2 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 
      7 //-----------------------------------------------------------------------------
      8 var BUGNUMBER = 456826;
      9 var summary = 'Do not assert with JIT during OOM';
     10 var actual = 'No Crash';
     11 var expect = 'No Crash';
     12 
     13 
     14 //-----------------------------------------------------------------------------
     15 test();
     16 //-----------------------------------------------------------------------------
     17 
     18 function test()
     19 {
     20  printBugNumber(BUGNUMBER);
     21  printStatus (summary);
     22 
     23 
     24  if (typeof gcparam != 'undefined')
     25  {
     26    gc();
     27    gc();
     28    gcparam("maxBytes", gcparam("gcBytes") + 4*1024);
     29    expectExitCode(5);
     30    expectExitCode(3);
     31  }
     32 
     33  const numRows = 600;
     34  const numCols = 600;
     35  var scratch = {};
     36  var scratchZ = {};
     37 
     38  function complexMult(a, b) {
     39    var newr = a.r * b.r - a.i * b.i;
     40    var newi = a.r * b.i + a.i * b.r;
     41    scratch.r = newr;
     42    scratch.i = newi;
     43    return scratch;
     44  }
     45 
     46  function complexAdd(a, b) {
     47    scratch.r = a.r + b.r;
     48    scratch.i = a.i + b.i;
     49    return scratch;
     50  }
     51 
     52  function abs(a) {
     53    return Math.sqrt(a.r * a.r + a.i * a.i);
     54  }
     55 
     56  function computeEscapeSpeed(c) {
     57    scratchZ.r = scratchZ.i = 0;
     58    const scaler = 5;
     59    const threshold = (colors.length - 1) * scaler + 1;
     60    for (var i = 1; i < threshold; ++i) {
     61      scratchZ = complexAdd(c, complexMult(scratchZ, scratchZ));
     62      if (scratchZ.r * scratchZ.r + scratchZ.i * scratchZ.i > 4) {
     63        return Math.floor((i - 1) / scaler) + 1;
     64      }
     65    }
     66    return 0;
     67  }
     68 
     69  const colorStrings = [
     70    "black",
     71    "green",
     72    "blue",
     73    "red",
     74    "purple",
     75    "orange",
     76    "cyan",
     77    "yellow",
     78    "magenta",
     79    "brown",
     80    "pink",
     81    "chartreuse",
     82    "darkorange",
     83    "crimson",
     84    "gray",
     85    "deeppink",
     86    "firebrick",
     87    "lavender",
     88    "lawngreen",
     89    "lightsalmon",
     90    "lime",
     91    "goldenrod"
     92    ];
     93 
     94  var colors = [];
     95 
     96  function createMandelSet(realRange, imagRange) {
     97    var start = new Date();
     98 
     99    // Set up our colors
    100    for (var color of colorStrings) {
    101        var [r, g, b] = [0, 0, 0];
    102        colors.push([r, g, b, 0xff]);
    103      }
    104 
    105    var realStep = (realRange.max - realRange.min)/numCols;
    106    var imagStep = (imagRange.min - imagRange.max)/numRows;
    107    for (var i = 0, curReal = realRange.min;
    108         i < numCols;
    109         ++i, curReal += realStep) {
    110      for (var j = 0, curImag = imagRange.max;
    111           j < numRows;
    112           ++j, curImag += imagStep) {
    113        var c = { r: curReal, i: curImag }
    114        var n = computeEscapeSpeed(c);
    115      }
    116    }
    117    print(Date.now() - start);
    118  }
    119 
    120  var realRange = { min: -2.1, max: 2 };
    121  var imagRange = { min: -2, max: 2 };
    122  createMandelSet(realRange, imagRange);
    123 
    124 
    125  reportCompare(expect, actual, summary);
    126 }