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 < 100000; ++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; |