exit-from-setter.js   [plain text]


(function() {
    var o = {_f:42};
    o.__defineSetter__("f", function(value) { this._f = value * 100; });
    var n = 50000;
    function foo(o_, v_) {
        var o = o_.f;
        var v = v_.f;
        o.f = v;
        o.f = v + 1;
    }
    noInline(foo);
    for (var i = 0; i < n; ++i) {
        foo({f:o}, {f:11});
    }
    if (o._f != (11 + 1) * 100)
        throw "Error: bad o._f: " + o._f;
    for (var i = 0; i < n; ++i) {
        foo({f:o}, {f:1000000000});
    }
    if (o._f != 100 * (1000000000 + 1))
        throw "Error: bad o._f (2): " + o._f;
})();