| function foo(a, s) { | |
| return a[s] + 1; | |
| } | |
| var shouldThrow = false; | |
| function bar() { | |
| if (shouldThrow) | |
| throw "hello"; | |
| return 42; | |
| } | |
| var a = {}; | |
| a.__defineGetter__("bar", bar); | |
| noInline(foo); | |
| noInline(bar); | |
| for (var i = 0; i < testLoopCount; ++i) { | |
| var result = foo(a, "bar"); | |
| if (result != 43) | |
| throw "Error: bad result: " + result; | |
| } | |
| var didThrow; | |
| try { | |
| shouldThrow = true; | |
| foo(a, "bar"); | |
| } catch (e) { | |
| didThrow = e; | |
| } | |
| if (didThrow != "hello") | |
| throw "Error: didn't throw or threw wrong exception: " + didThrow; |