invalidation-point.js [plain text]
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;