]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/stress/function-sinking-osrexit.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / stress / function-sinking-osrexit.js
diff --git a/tests/stress/function-sinking-osrexit.js b/tests/stress/function-sinking-osrexit.js
new file mode 100644 (file)
index 0000000..7f33c7d
--- /dev/null
@@ -0,0 +1,21 @@
+function sink (p, q) {
+    var g = function(x) { return x; };
+    if (p) { if (q) OSRExit(); return g; }
+    return function(x) { return x; };
+}
+noInline(sink);
+
+for (var i = 0; i < 10000; ++i) {
+    var f = sink(true, false);
+    var result = f(42);
+    if (result != 42)
+    throw "Error: expected 42 but got " + result;
+}
+
+// At this point, the function should be compiled down to the FTL
+
+// Check that the function is properly allocated on OSR exit
+var f = sink(true, true);
+var result = f(42);
+if (result != 42)
+    throw "Error: expected 42 but got " + result;