--- /dev/null
+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);