function foo(i) {
    return arguments[i];
}

function bar(i) {
    return [arguments[i], foo(i, "one", 2, "three"), arguments[i]];
}

noInline(bar);

function arraycmp(a, b) {
    if (a.length != b.length)
        return false;
    for (var i = 0; i < a.length; ++i) {
        if (a[i] != b[i])
            return false;
    }
    return true;
}

for (var i = 0; i < 10000; ++i) {
    var thingies = [i % 4, "one", 2, "three"];
    var otherThingies = [i % 4, "five", 6, "seven"];
    var result = bar(i % 4, "five", 6, "seven");
    if (!arraycmp(result, [otherThingies[i % 4], thingies[i % 4], otherThingies[i % 4]]))
        throw "Error: bad result for i = " + i + ": " + result;
}
