tor-browser

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

bug-2004443.js (799B)


      1 function checkMarks(expected) {
      2  assertEq(getMarks().join(", "), expected.join(", "));
      3 }
      4 
      5 gczeal(0);
      6 gczeal('CheckGrayMarking');
      7 gc();
      8 
      9 let g1 = newGlobal({newCompartment: true});
     10 let g2 = newGlobal({newCompartment: true});
     11 let defineTestFunction = `
     12  function makeTestObject(s) {
     13    let o = {x: s};
     14    addMarkObservers([o]);
     15    grayRoot()[0] = o;
     16    o = undefined;
     17  }
     18  `;
     19 g1.eval(defineTestFunction);
     20 g2.eval(defineTestFunction);
     21 
     22 let s = Symbol();
     23 g1.makeTestObject(s);
     24 g2.makeTestObject(s);
     25 addMarkObservers([s]);
     26 s = undefined;
     27 
     28 checkMarks(['unmarked', 'unmarked', 'unmarked']);
     29 
     30 schedulezone(g1);
     31 startgc();
     32 finishgc();
     33 checkMarks(['gray', 'unmarked', 'unmarked']);
     34 
     35 g2.eval('grayRoot()[0].x');
     36 checkMarks(['gray', 'unmarked', 'unmarked']);
     37 
     38 gc();
     39 checkMarks(['gray', 'gray', 'gray']);