chromium/third_party/blink/web_tests/fast/js/regress/script-tests/external-arguments-putbyval.js

function foo(args)
{
    var result = 0;
    for (var i = 0; i < args.length; ++i) {
        result += args[i];
        args[i] += i;
    }
    return result;
}

function bar(a, b, c, d)
{
    return [foo(arguments), a, b, c, d];
}

for (var i = 0; i < 10000; ++i) {
    var result = bar(i, i + 1, i + 2, i + 3);
    if (result.length != 5)
        throw "Bad result length in " + result;
    if (result[0] != i * 4 + 6)
        throw "Bad first element in " + result + "; expected " + (i * 3 + 6);
    if (result[1] != i)
        throw "Bad second element in " + result + "; expected " + i;
    if (result[2] != i + 1 + 1)
        throw "Bad third element in " + result + "; expected " + (i + 1 + 1);
    if (result[3] != i + 2 + 2)
        throw "Bad fourth element in " + result + "; expected " + (i + 2 + 2);
    if (result[4] != i + 3 + 3)
        throw "Bad fifth element in " + result + "; expected " + (i + 3 + 3);
}