X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/4be4e30906bcb8ee30b4d189205cb70bad6707ce..81345200c95645a1b0d2635520f96ad55dfde63f:/tests/stress/arguments-copy-register-array-backing-store.js diff --git a/tests/stress/arguments-copy-register-array-backing-store.js b/tests/stress/arguments-copy-register-array-backing-store.js new file mode 100644 index 0000000..1e64f7b --- /dev/null +++ b/tests/stress/arguments-copy-register-array-backing-store.js @@ -0,0 +1,32 @@ +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"); +} +