| var hasBasicBlockExecuted = $vm.hasBasicBlockExecuted; |
| |
| 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."); |