]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/stress/inline-llint-with-switch.js
JavaScriptCore-7600.1.4.9.tar.gz
[apple/javascriptcore.git] / tests / stress / inline-llint-with-switch.js
diff --git a/tests/stress/inline-llint-with-switch.js b/tests/stress/inline-llint-with-switch.js
new file mode 100644 (file)
index 0000000..84b7b6b
--- /dev/null
@@ -0,0 +1,43 @@
+function foo(i) {
+    switch (i) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+    case 6:
+    case 7:
+    case 8:
+    case 9:
+        return 42;
+    default:
+        return "error";
+    }
+}
+
+function bar(p) {
+    if (p)
+        return foo(effectful42() - 42);
+    else
+        return 42;
+}
+
+noInline(bar);
+
+function test(p) {
+    var result = bar(p);
+    if (result != 42)
+        throw "Error: bad result: " + result;
+}
+
+// Make sure that the call to foo() looks like it has happened.
+for (var i = 0; i < 2; ++i)
+    test(true);
+
+// Warm up bar and cause inlining, but make sure that foo() doesn't get DFG'd.
+for (var i = 0; i < 10000; ++i)
+    test(false);
+
+// And finally test the switch statement.
+test(true);