src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/BranchProbabilityNode.java
changeset 50858 2d3e99a72541
parent 50609 bf414874c28f
child 52910 583fd71c47d6
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/BranchProbabilityNode.java	Wed Jun 27 16:57:21 2018 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/extended/BranchProbabilityNode.java	Wed Jun 27 17:02:41 2018 -0700
@@ -20,6 +20,8 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
+
+
 package org.graalvm.compiler.nodes.extended;
 
 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0;
@@ -69,6 +71,15 @@
     public static final double VERY_FAST_PATH_PROBABILITY = 0.999;
     public static final double VERY_SLOW_PATH_PROBABILITY = 1 - VERY_FAST_PATH_PROBABILITY;
 
+    /*
+     * This probability may seem excessive, but it makes a difference in long running loops. Lets
+     * say a loop is executed 100k times and it has a few null checks with probability 0.999. As
+     * these probabilities multiply for every loop iteration, the overall loop frequency will be
+     * calculated as approximately 30 while it should be 100k.
+     */
+    public static final double LUDICROUSLY_FAST_PATH_PROBABILITY = 0.999999;
+    public static final double LUDICROUSLY_SLOW_PATH_PROBABILITY = 1 - LUDICROUSLY_FAST_PATH_PROBABILITY;
+
     @Input ValueNode probability;
     @Input ValueNode condition;