1var foo = function(o) {
2    return arguments;
3};
4
5var bar = function() {
6    var a = Array.prototype.slice.call(arguments);
7    var sum = 0;
8    for (var i = 0; i < a.length; ++i)
9        sum += a[i];
10    return sum;
11};
12
13var args = foo({}, 1, 2, 3);
14var expectedArgs = Array.prototype.slice.call(args);
15
16edenGC();
17
18var expectedResult = 0;
19var result = 0;
20for (var i = 0; i < 10000; ++i) {
21    expectedResult += i + i + 1 + i + 2;
22    result += bar(i, i + 1, i + 2);
23}
24
25if (result != expectedResult)
26    throw new Error("Incorrect result: " + result + " != " + expectedResult);
27
28for (var i = 0; i < expectedArgs.length; ++i) {
29    if (args[i] !== expectedArgs[i])
30        throw new Error("Incorrect arg result");
31}
32
33