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;
})();