tor-browser

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

caching-and-ccws.js (735B)


      1 // Test that the SavedFrame caching doesn't get messed up in the presence of
      2 // cross-compartment calls.
      3 
      4 const funcSource = "function call(f) { return f(); }";
      5 
      6 const g1 = newGlobal();
      7 const g2 = newGlobal();
      8 
      9 g1.eval(funcSource);
     10 g2.eval(funcSource);
     11 eval(funcSource);
     12 
     13 function doSaveStack() {
     14  return saveStack();
     15 }
     16 
     17 const captureStacksAcrossCompartmens = () =>
     18  [this, g1, g2].map(g => g.call(doSaveStack));
     19 
     20 (function f0() {
     21  const stacks = [];
     22 
     23  for (var i = 0; i < 2; i++)
     24    stacks.push(...captureStacksAcrossCompartmens());
     25 
     26  const [s1, s2, s3, s4, s5, s6] = stacks;
     27 
     28  assertEq(s1 != s2, true);
     29  assertEq(s2 != s3, true);
     30  assertEq(s3 != s1, true);
     31 
     32  assertEq(s1, s4);
     33  assertEq(s2, s5);
     34  assertEq(s3, s6);
     35 }());