new-array-with-size-throw-exception-and-tear-off-arguments.js   [plain text]


function foo() {
    var a = arguments;
    return new Array(a[0]);
}

function bar(x) {
    return foo(x);
}

noInline(bar);

for (var i = 0; i < 10000; ++i) {
    var result = bar(42);
    if (result.length != 42)
        throw "Error: bad result length: " + result;
}

var didThrow = false;
try {
    bar(-1);
} catch (e) {
    didThrow = e;
}

if (("" + didThrow).indexOf("RangeError") != 0)
    throw "Error: did not throw right exception: " + didThrow;