]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/controlFlowProfiler/loop-statements.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / controlFlowProfiler / loop-statements.js
diff --git a/tests/controlFlowProfiler/loop-statements.js b/tests/controlFlowProfiler/loop-statements.js
new file mode 100644 (file)
index 0000000..a2cdc3d
--- /dev/null
@@ -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.");