]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/stress/poly-call-exit.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / stress / poly-call-exit.js
diff --git a/tests/stress/poly-call-exit.js b/tests/stress/poly-call-exit.js
new file mode 100644 (file)
index 0000000..eadd16a
--- /dev/null
@@ -0,0 +1,29 @@
+(function() {
+    function foo(x) { return 1; }
+    function bar(x) { return x; }
+    function baz(x) { return x + 1; }
+    
+    var n = 1000000;
+    
+    var result = (function(o) {
+        var f = foo;
+        var g = bar;
+        var h = baz;
+        
+        var result = 0;
+        for (var i = 0; i < n; ++i) {
+            if (i == n - 1)
+                f = h;
+            result += f(o.f);
+            
+            var tmp = f;
+            f = g;
+            g = tmp;
+        }
+        
+        return result;
+    })({f:42});
+    
+    if (result != ((n / 2 - 1) * 42) + (n / 2 * 1) + (42 + 1))
+        throw "Error: bad result: " + result;
+})();