description('This test makes sure stack unwinding works correctly in combination with dynamically added scopes'); function gc() { if (this.GCController) GCController.collect(); else for (var i = 0; i < 10000; ++i) // Allocate a sufficient number of objects to force a GC. ({}); } var result; function runTest() { var test = "outer scope"; with({test:"inner scope"}) (function () { try { throw ""; } finally { result = test; shouldBe("result", '"inner scope"'); return;}})() } runTest(); try{ (function() { try { throw ""; } catch(y) { throw (function(){}); } finally { } })() }catch(r){ } // Just clobber any temporaries a=({}); a*=a*a*a; gc();