| function foo(p) { | |
| var o = {f:42}; | |
| if (p) | |
| throw o; | |
| return o; | |
| } | |
| noInline(foo); | |
| for (var i = 0; i < testLoopCount; ++i) { | |
| var o = foo(false); | |
| if (o.f != 42) | |
| throw "Error: bad result: " + o.f; | |
| } | |
| var didThrow = false; | |
| try { | |
| foo(true); | |
| } catch (e) { | |
| if (e.f != 42) | |
| throw "Error: bad result in catch: " + o.f; | |
| didThrow = true; | |
| } | |
| if (!didThrow) | |
| throw "Error: should have thrown but didn't."; |