var foo = function(o) { return arguments; }; var bar = function() { var a = Array.prototype.slice.call(arguments); var sum = 0; for (var i = 0; i < a.length; ++i) sum += a[i]; return sum; }; var args = foo({}, 1, 2, 3); var expectedArgs = Array.prototype.slice.call(args); edenGC(); var expectedResult = 0; var result = 0; for (var i = 0; i < 10000; ++i) { expectedResult += i + i + 1 + i + 2; result += bar(i, i + 1, i + 2); } if (result != expectedResult) throw new Error("Incorrect result: " + result + " != " + expectedResult); for (var i = 0; i < expectedArgs.length; ++i) { if (args[i] !== expectedArgs[i]) throw new Error("Incorrect arg result"); }