X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/controlFlowProfiler/loop-statements.js?ds=inline diff --git a/tests/controlFlowProfiler/loop-statements.js b/tests/controlFlowProfiler/loop-statements.js new file mode 100644 index 0000000..a2cdc3d --- /dev/null +++ b/tests/controlFlowProfiler/loop-statements.js @@ -0,0 +1,76 @@ +load("./driver/driver.js"); + +function forRegular(limit) { + var sum = 0; + for (var i = 0; i < limit; i++) { + sum += i; + } + + return sum; +} + +function forIn(o) { + var s = ""; + var p; + for (p in o) { + s += p; + } +} + +function forOf(a) { + var s = ""; + var p; + for (p of a) { + s += p; + } +} + +function whileLoop(limit) { + var i = 0; + var sum = 0; + while (i < limit) { + sum += i; + i++; + } + + return sum; +} + +assert(!hasBasicBlockExecuted(forRegular, "var sum"), "should not have executed yet."); + +forRegular(0); +assert(hasBasicBlockExecuted(forRegular, "var sum"), "should have executed."); +assert(!hasBasicBlockExecuted(forRegular, "sum += i"), "should not have executed yet."); + +forRegular(1); +assert(hasBasicBlockExecuted(forRegular, "sum += i"), "should have executed."); + + +assert(!hasBasicBlockExecuted(forIn, "var s"), "should not have executed yet."); + +forIn({}); +assert(hasBasicBlockExecuted(forIn, "var s"), "should have executed."); +assert(!hasBasicBlockExecuted(forIn, "s += p"), "should not have executed yet."); + +forIn({foo: "bar"}); +assert(hasBasicBlockExecuted(forIn, "s += p"), "should have executed."); + + +assert(!hasBasicBlockExecuted(forOf, "var s"), "should not have executed yet."); + +forOf([]); +assert(hasBasicBlockExecuted(forOf, "var s"), "should have executed."); +assert(!hasBasicBlockExecuted(forOf, "s += p"), "should not have executed yet."); + +forOf(["a"]); +assert(hasBasicBlockExecuted(forOf, "s += p"), "should have executed."); + + +assert(!hasBasicBlockExecuted(whileLoop, "var sum"), "should not have executed yet."); + +whileLoop(0); +assert(hasBasicBlockExecuted(whileLoop, "var sum"), "should have executed."); +assert(!hasBasicBlockExecuted(whileLoop, "sum += i"), "should not have executed yet."); + +whileLoop(1); +assert(hasBasicBlockExecuted(whileLoop, "sum += i"), "should have executed.");