put-by-id-build-list-order-recurse.js   [plain text]


var count = 0;

function setter(value) {
    Object.defineProperty(
        this, "f", {
        enumerable: true,
                configurable: true,
                writable: true,
                value: 32
                });
    var o = Object.create(this);
    var currentCount = count++;
    var str = "for (var i = " + currentCount + "; i < " + (100 + currentCount) + "; ++i)\n"
            + "    o.f\n";
    eval(str);
}

function foo(o) {
    o.f = 42;
}

noInline(foo);

for (var i = 0; i < 1000; ++i) {
    var o = {};
    o.__defineSetter__("f", setter);

    foo(o);
    if (o.f != 32)
        throw ("Error 1: "+o.f);

    foo(o);
    if (o.f != 42)
        throw ("Error 2: "+o.f);
}