tor-browser

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

bug-1997896.js (1274B)


      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 makeAndReturnObject = `
     12  var o = {};
     13  addMarkObservers([o]);
     14  grayRoot()[0] = o;
     15  o;
     16 `;
     17 let o1 = g1.eval(makeAndReturnObject);
     18 let o2 = g2.eval(makeAndReturnObject);
     19 let s = Symbol();
     20 addMarkObservers([s]);
     21 let i = getAtomMarkIndex(s);
     22 o1.s = s;
     23 o2.s = s;
     24 o1 = undefined;
     25 o2 = undefined;
     26 s = undefined;
     27 g1.o = undefined;
     28 g2.o = undefined;
     29 
     30 gc();
     31 checkMarks(['gray', 'gray', 'gray']);
     32 assertEq(getAtomMarkColor(g1, i), 'gray');
     33 assertEq(getAtomMarkColor(g2, i), 'gray');
     34 
     35 o1 = g1.eval('grayRoot()[0]');
     36 checkMarks(['black', 'gray', 'black']);
     37 assertEq(getAtomMarkColor(g1, i), 'black');
     38 assertEq(getAtomMarkColor(g2, i), 'gray');
     39 
     40 o2 = g2.eval('grayRoot()[0]');
     41 checkMarks(['black', 'black', 'black']);
     42 assertEq(getAtomMarkColor(g1, i), 'black');
     43 assertEq(getAtomMarkColor(g2, i), 'black');
     44 
     45 o1 = undefined;
     46 schedulezone(this);
     47 schedulezone(g1);
     48 schedulezone('atoms');
     49 startgc();
     50 assertEq(gcstate(), 'NotActive');
     51 
     52 checkMarks(['gray', 'black', 'black']);
     53 assertEq(getAtomMarkColor(g1, i), 'gray');
     54 assertEq(getAtomMarkColor(g2, i), 'black');