--- /dev/null
+function foo(p) {
+ var o = {f:42};
+ if (p)
+ throw o;
+ return o;
+}
+
+noInline(foo);
+
+for (var i = 0; i < 100000; ++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.";