--- /dev/null
+function foo(o, p) {
+ possiblyDoBadThings(p);
+ return o.f();
+}
+noInline(foo);
+
+function Thingy() { }
+Thingy.prototype.f = function() { return 42; }
+
+function possiblyDoBadThings(p) {
+ if (p)
+ Thingy.prototype.f = function() { return 24; }
+}
+noInline(possiblyDoBadThings);
+
+for (var i = 0; i < 100000; ++i) {
+ var result = foo(new Thingy(), false);
+ if (result != 42)
+ throw "Error: bad result: " + result;
+}
+
+var result = foo(new Thingy(), true);
+if (result != 24)
+ throw "Error: bad result: " + result;