]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/stress/arguments-copy-register-array-backing-store.js
JavaScriptCore-7600.1.4.9.tar.gz
[apple/javascriptcore.git] / 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 (file)
index 0000000..1e64f7b
--- /dev/null
@@ -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");
+}
+