ftl-library-inlining-exceptions-dataview.js   [plain text]


function foo(d){
    return d.getInt8(42);
}

noInline(foo);

var d = new DataView(new ArrayBuffer(43));
d.setInt8(42, 43);
for (var i = 0; i < 100000; ++i) {
    var result = foo(d);
    if (result != 43)
        throw "Error: bad result: " + result;
}

for (var i = 0; i < 10; ++i) {
    var didThrow = false;
    try {
        foo(new DataView(new ArrayBuffer(42)));
    } catch (e) {
        didThrow = true;
        if (e.message.indexOf("Out of bounds") < 0)
            throw "Error: bad exception: " + e.message;
    }
    if (!didThrow)
        throw "Error: did not throw";
}