put-by-id-throw-through-optimized-code.js   [plain text]


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

noInline(foo);

for (var i = 0; i < 100000; ++i) {
    var o = {};
    foo(o);
    if (o.f != 42)
        throw "Error: bad result: " + o.f;
    o = {f:23};
    foo(o);
    if (o.f != 42)
        throw "Error: bad result: " + o.f;
    o = {g:12};
    foo(o);
    if (o.f != 42)
        throw "Error: bad result: " + o.f;
}

var didThrow;
try {
    var o = {};
    Object.freeze(o);
    foo(o);
} catch (e) {
    didThrow = e;
}

if (!didThrow || didThrow.toString().indexOf("TypeError:") != 0)
    throw "Error: didn't throw or threw wrong exception: " + didThrow;