X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/controlFlowProfiler/conditional-expression.js?ds=inline diff --git a/tests/controlFlowProfiler/conditional-expression.js b/tests/controlFlowProfiler/conditional-expression.js new file mode 100644 index 0000000..284b97c --- /dev/null +++ b/tests/controlFlowProfiler/conditional-expression.js @@ -0,0 +1,44 @@ +load("./driver/driver.js"); + +function foo(){ } +function bar(){ } +function baz(){ } + +function testConditionalBasic(x) { + return x ? 10 : 20; +} + + +testConditionalBasic(false); +checkBasicBlock(testConditionalBasic, "x", ShouldHaveExecuted); +checkBasicBlock(testConditionalBasic, "20", ShouldHaveExecuted); +checkBasicBlock(testConditionalBasic, "10", ShouldNotHaveExecuted); + +testConditionalBasic(true); +checkBasicBlock(testConditionalBasic, "10", ShouldHaveExecuted); + + +function testConditionalFunctionCall(x, y) { + x ? y ? foo() + : baz() + : bar() +} +testConditionalFunctionCall(false, false); +checkBasicBlock(testConditionalFunctionCall, "x", ShouldHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "? y", ShouldHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "bar", ShouldHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, ": bar", ShouldHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "y", ShouldNotHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "? foo", ShouldNotHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "foo", ShouldNotHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "baz", ShouldNotHaveExecuted); + +testConditionalFunctionCall(true, false); +checkBasicBlock(testConditionalFunctionCall, "y", ShouldHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "? foo", ShouldHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, ": baz", ShouldHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "baz", ShouldHaveExecuted); +checkBasicBlock(testConditionalFunctionCall, "foo", ShouldNotHaveExecuted); + +testConditionalFunctionCall(true, true); +checkBasicBlock(testConditionalFunctionCall, "foo", ShouldHaveExecuted);