tor-browser

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

incremental-compacting.js (1212B)


      1 // Exercise incremental compacting GC
      2 // Run with MOZ_GCTIMER to see the timings
      3 
      4 gczeal(0);
      5 
      6 function testCompacting(zoneCount, objectCount, sliceCount)
      7 {
      8    // Allocate objectCount objects in zoneCount zones
      9    // On linux64 debug builds we will move them all
     10    // Run compacting GC with multiple slices
     11 
     12    var zones = [];
     13    for (var i = 0; i < zoneCount; i++) {
     14        var zone = newGlobal();
     15        evaluate("var objects; " +
     16                 "function makeObjectGraph(objectCount) { " +
     17                 "    objects = []; " +
     18                 "    for (var i = 0; i < objectCount; i++) " +
     19                 "        objects.push({ serial: i }); " +
     20                "}",
     21                 { global: zone });
     22        zone.makeObjectGraph(objectCount);
     23        zones.push(zone);
     24    }
     25 
     26    // Finish any alloc-triggered incremental GC
     27    if (gcstate() !== "NotActive")
     28        gc();
     29 
     30    startgc(sliceCount, "shrinking");
     31    while (gcstate() !== "NotActive") {
     32        gcslice(sliceCount);
     33    }
     34 
     35    return zones;
     36 }
     37 
     38 testCompacting(1, 100000, 100000);
     39 testCompacting(2, 100000, 100000);
     40 testCompacting(4, 50000,  100000);
     41 testCompacting(2, 100000, 50000);