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