tor-browser

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

pretenured-operations.js (991B)


      1 // Check individual operations that support pretenuring their result.
      2 
      3 load(libdir + "pretenure.js");
      4 
      5 let a;
      6 
      7 function run(op) {
      8  a = [];
      9  for (let i = 0; i < 1000; i++) {
     10    a.push(op());
     11  }
     12  return a[0];
     13 }
     14 
     15 function check(op) {
     16  assertEq(isNurseryAllocated(run(op)), true);
     17  minorgc();
     18  assertEq(isNurseryAllocated(run(op)), false);
     19 
     20  a = undefined;
     21  gc();
     22 }
     23 
     24 setupPretenureTest();
     25 
     26 // Object allocation.
     27 check(() => { return {}; });
     28 
     29 // Array allocation.
     30 check(() => { return []; });
     31 
     32 // Object construction.
     33 check(() => { return new Object(); });
     34 check(() => { return Object(); });
     35 
     36 // Array construction.
     37 check(() => { return Array(); });
     38 check(() => { return Array(150); });
     39 check(() => { return new Array(); });
     40 check(() => { return new Array(150); });
     41 
     42 // Lambda objects.
     43 check(() => { return () => 0 });
     44 function f() {
     45  let x = 1;
     46  check(() => { return () => x });
     47  x = 2;
     48 }
     49 f();
     50 
     51 // DOM Allocations
     52 let fdo = new FakeDOMObject();
     53 check(() => { return fdo.doBar(); })