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 }());