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); |