tor-browser

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

regress-203278-2.js (1659B)


      1 // |reftest| slow
      2 /* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 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 = 203278;
      9 var summary = 'Don\'t crash in recursive js_MarkGCThing';
     10 var actual = 'FAIL';
     11 var expect = 'PASS';
     12 
     13 printBugNumber(BUGNUMBER);
     14 printStatus (summary);
     15 
     16 // Prepare  array to test DeutschSchorrWaite implementation
     17 // and its reverse pointer scanning performance
     18 
     19 var a = new Array(1000 * 1000);
     20 
     21 var i = a.length;
     22 while (i-- != 0) {
     23  switch (i % 11) {
     24  case 0:
     25    a[i] = { };
     26    break;
     27  case 1:
     28    a[i] = { a: true, b: false, c: 0 };
     29    break;
     30  case 2:
     31    a[i] = { 0: true, 1: {}, 2: false };
     32    break;
     33  case 3:
     34    a[i] = { a: 1.2, b: "", c: [] };
     35    break;
     36  case 4:
     37    a[i] = [ false ];
     38    break;
     39  case 6:
     40    a[i] = [];
     41    break;
     42  case 7:
     43    a[i] = false;
     44    break;
     45  case 8:
     46    a[i] = "x";
     47    break;
     48  case 9:
     49    a[i] = new String("x");
     50    break;
     51  case 10:
     52    a[i] = 1.1;
     53    break;
     54  case 10:
     55    a[i] = new Boolean();
     56    break;
     57  }	   
     58 }
     59 
     60 printStatus("DSF is prepared");
     61 
     62 // Prepare linked list that causes recursion during GC with
     63 // depth O(list size)
     64 // Note: pass "-S 500000" option to the shell to limit stack quota
     65 // available for recursion
     66 
     67 for (i = 0; i != 50*1000; ++i) {
     68  a = [a, a, {}];
     69  a = [a,  {}, a];
     70 
     71 }
     72 
     73 printStatus("Linked list is prepared");
     74 
     75 gc();
     76 
     77 actual = 'PASS';
     78 
     79 reportCompare(expect, actual, summary);