getter.js   [plain text]


function foo(o) {
    return o.f + o.k * 1000;
}

noInline(foo);

for (var i = 0; i < 100; ++i) {
    var o = {g_: 5};
    o.__defineGetter__("f", function() { return 42 + this.g_; });
    o.__defineGetter__("g", function() { return 43 + this.g_; });
    o.__defineGetter__("h", function() { return 44 + this.g_; });
    o.__defineGetter__("i", function() { return 45 + this.g_; });
    o.__defineGetter__("j", function() { return 46 + this.g_; });
    o.__defineGetter__("k", function() { return 47 + this.g_; });
    var result = foo(o);
    if (result != (42 + 5) + 1000 * (47 + 5))
        throw "Error: bad result: " + result;
}