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