tor-browser

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

gc-frame-cache.js (2181B)


      1 // Test that SavedFrame instances get removed from the SavedStacks frames cache
      2 // after a GC.
      3 
      4 const FUZZ_FACTOR = 3;
      5 
      6 function isAboutEq(actual, expected) {
      7  return Math.abs(actual - expected) <= FUZZ_FACTOR;
      8 }
      9 
     10 var stacks = [];
     11 
     12 (function () {
     13  // Use an IIFE here so that we don't keep these saved stacks alive in the
     14  // frame cache when we test that they all go away at the end of the test.
     15 
     16  var startCount = getSavedFrameCount();
     17  print("startCount = " + startCount);
     18 
     19  stacks.push(saveStack());
     20  stacks.push(saveStack());
     21  stacks.push(saveStack());
     22  stacks.push(saveStack());
     23  stacks.push(saveStack());
     24  stacks.push(saveStack());
     25  stacks.push(saveStack());
     26  stacks.push(saveStack());
     27  stacks.push(saveStack());
     28  stacks.push(saveStack());
     29  stacks.push(saveStack());
     30  stacks.push(saveStack());
     31  stacks.push(saveStack());
     32  stacks.push(saveStack());
     33  stacks.push(saveStack());
     34  stacks.push(saveStack());
     35  stacks.push(saveStack());
     36  stacks.push(saveStack());
     37  stacks.push(saveStack());
     38  stacks.push(saveStack());
     39  stacks.push(saveStack());
     40  stacks.push(saveStack());
     41  stacks.push(saveStack());
     42  stacks.push(saveStack());
     43  stacks.push(saveStack());
     44  stacks.push(saveStack());
     45  stacks.push(saveStack());
     46  stacks.push(saveStack());
     47  stacks.push(saveStack());
     48  stacks.push(saveStack());
     49  stacks.push(saveStack());
     50  stacks.push(saveStack());
     51  stacks.push(saveStack());
     52  stacks.push(saveStack());
     53  stacks.push(saveStack());
     54  stacks.push(saveStack());
     55  stacks.push(saveStack());
     56  stacks.push(saveStack());
     57  stacks.push(saveStack());
     58  stacks.push(saveStack());
     59  stacks.push(saveStack());
     60  stacks.push(saveStack());
     61  stacks.push(saveStack());
     62  stacks.push(saveStack());
     63  stacks.push(saveStack());
     64  stacks.push(saveStack());
     65  stacks.push(saveStack());
     66  stacks.push(saveStack());
     67  stacks.push(saveStack());
     68  stacks.push(saveStack());
     69  stacks.push(saveStack());
     70 
     71  gc();
     72 
     73  var endCount = getSavedFrameCount();
     74  print("endCount = " + endCount);
     75 
     76  assertEq(isAboutEq(endCount - startCount, 50), true);
     77 }());
     78 
     79 while (stacks.length) {
     80  stacks.pop();
     81 }
     82 gc();
     83 
     84 stacks = null;
     85 gc();
     86 
     87 assertEq(isAboutEq(getSavedFrameCount(), 0), true);