inlined-constructor-this-liveness.js   [plain text]


function Foo(a, b) {
    this.f = a.f;
    this.g = b.f + 1;
}

function foo(a, b) {
    return new Foo(a, b);
}

noInline(foo);

for (var i = 0; i < 100000; ++i) {
    var result = foo({f:1}, {f:2});
    if (result.f != 1)
        throw "Error: bad result.f: " + result.f;
    if (result.g != 3)
        throw "Error: bad result.g: " + result.g;
}

var result = foo({f:1}, {f:2.5});
if (result.f != 1)
    throw "Error: bad result.f: " + result.f;
if (result.g != 3.5)
    throw "Error: bad result.f: " + result.g;