exit-from-getter.js [plain text]
(function() {
var o = {_f:42};
o.__defineGetter__("f", function() { return this._f * 100; });
var result = 0;
var n = 50000;
function foo(o) {
return o.f + 11;
}
noInline(foo);
for (var i = 0; i < n; ++i) {
result += foo(o);
}
if (result != n * (42 * 100 + 11))
throw "Error: bad result: " + result;
o._f = 1000000000;
result = 0;
for (var i = 0; i < n; ++i) {
result += foo(o);
}
if (result != n * (1000000000 * 100 + 11))
throw "Error: bad result (2): " + result;
})();