// Test that the SavedFrame caching doesn't get messed up in the presence of // cross-compartment calls. const funcSource = "function call(f) { return f(); }"; const g1 = newGlobal(); const g2 = newGlobal(); g1.eval(funcSource); g2.eval(funcSource); eval(funcSource); function doSaveStack() { return saveStack(); } const captureStacksAcrossCompartmens = () => [this, g1, g2].map(g => g.call(doSaveStack)); (function f0() { const stacks = []; for (var i = 0; i < 2; i++) stacks.push(...captureStacksAcrossCompartmens()); const [s1, s2, s3, s4, s5, s6] = stacks; assertEq(s1 != s2, true); assertEq(s2 != s3, true); assertEq(s3 != s1, true); assertEq(s1, s4); assertEq(s2, s5); assertEq(s3, s6); }());