]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/stress/varargs-inlined-simple-exit-aliasing.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / stress / varargs-inlined-simple-exit-aliasing.js
diff --git a/tests/stress/varargs-inlined-simple-exit-aliasing.js b/tests/stress/varargs-inlined-simple-exit-aliasing.js
new file mode 100644 (file)
index 0000000..23890d1
--- /dev/null
@@ -0,0 +1,41 @@
+function foo(a, b) {
+    return a + b;
+}
+
+function verify(a, b) {
+    if (a !== b)
+        throw "Error: the two arguments objects aren't identical.";
+    if (a[0] !== 42)
+        throw "Error: the first argument isn't 42 (a).";
+    if (b[0] !== 42)
+        throw "Error: the first argument isn't 42 (b).";
+}
+
+noInline(verify);
+
+var global = false;
+function bar(x) {
+    var a = arguments;
+    if (global) {
+        x = 42;
+        verify(arguments, a);
+    }
+    return foo.apply(null, a);
+}
+
+function baz(a, b) {
+    return bar(a, b);
+}
+
+noInline(baz);
+
+for (var i = 0; i < 10000; ++i) {
+    var result = baz(1, 2);
+    if (result != 1 + 2)
+        throw "Error: bad result: " + result;
+}
+
+global = true;
+var result = baz(1, 2);
+if (result != 42 + 2)
+    throw "Error: bad result at end: " + result;