function foo(a, b) { return a + "x" + b; } noInline(foo); for (var i = 0; i < 10000; ++i) { var result = foo({toString: function() { return "a"; }}, 42); if (result != "ax42") throw "Error: bad result: " + result; } var result = null; var didThrow = false; try { result = foo({toString: function() { throw "error"; }}, 42); } catch (e) { didThrow = true; } if (!didThrow) throw "Error: did not throw"; if (result !== null) throw "Error: did set result: " + result;