< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/ProfileCompiledMethodsPhase.java

Print this page




  31 import org.graalvm.compiler.nodes.AbstractBeginNode;
  32 import org.graalvm.compiler.nodes.AbstractEndNode;
  33 import org.graalvm.compiler.nodes.AbstractMergeNode;
  34 import org.graalvm.compiler.nodes.CallTargetNode;
  35 import org.graalvm.compiler.nodes.ConstantNode;
  36 import org.graalvm.compiler.nodes.DeoptimizeNode;
  37 import org.graalvm.compiler.nodes.FixedNode;
  38 import org.graalvm.compiler.nodes.FixedWithNextNode;
  39 import org.graalvm.compiler.nodes.IfNode;
  40 import org.graalvm.compiler.nodes.Invoke;
  41 import org.graalvm.compiler.nodes.LogicNode;
  42 import org.graalvm.compiler.nodes.ParameterNode;
  43 import org.graalvm.compiler.nodes.ReturnNode;
  44 import org.graalvm.compiler.nodes.SafepointNode;
  45 import org.graalvm.compiler.nodes.StructuredGraph;
  46 import org.graalvm.compiler.nodes.StructuredGraph.ScheduleResult;
  47 import org.graalvm.compiler.nodes.UnwindNode;
  48 import org.graalvm.compiler.nodes.VirtualState;
  49 import org.graalvm.compiler.nodes.calc.BinaryNode;
  50 import org.graalvm.compiler.nodes.calc.ConvertNode;
  51 import org.graalvm.compiler.nodes.calc.DivNode;
  52 import org.graalvm.compiler.nodes.calc.IntegerDivRemNode;
  53 import org.graalvm.compiler.nodes.calc.MulNode;
  54 import org.graalvm.compiler.nodes.calc.NotNode;
  55 import org.graalvm.compiler.nodes.calc.ReinterpretNode;
  56 import org.graalvm.compiler.nodes.calc.RemNode;
  57 import org.graalvm.compiler.nodes.cfg.Block;
  58 import org.graalvm.compiler.nodes.cfg.ControlFlowGraph;
  59 import org.graalvm.compiler.nodes.debug.DynamicCounterNode;
  60 import org.graalvm.compiler.nodes.extended.SwitchNode;
  61 import org.graalvm.compiler.nodes.java.AbstractNewObjectNode;
  62 import org.graalvm.compiler.nodes.java.AccessMonitorNode;
  63 import org.graalvm.compiler.nodes.java.MonitorIdNode;
  64 import org.graalvm.compiler.nodes.memory.Access;
  65 import org.graalvm.compiler.nodes.spi.ValueProxy;
  66 import org.graalvm.compiler.nodes.virtual.VirtualObjectNode;
  67 import org.graalvm.compiler.phases.Phase;
  68 import org.graalvm.compiler.phases.schedule.SchedulePhase;
  69 
  70 /**
  71  * This phase add counters for the dynamically executed number of nodes. Incrementing the counter


 145             double blockProbability = block.probability();
 146             for (Node node : schedule.getBlockToNodesMap().get(block)) {
 147                 count += blockProbability * getNodeWeight(node);
 148             }
 149         }
 150         return count;
 151     }
 152 
 153     private static double getNodeWeight(Node node) {
 154         if (node instanceof AbstractMergeNode) {
 155             return ((AbstractMergeNode) node).phiPredecessorCount();
 156         } else if (node instanceof AbstractBeginNode || node instanceof AbstractEndNode || node instanceof MonitorIdNode || node instanceof ConstantNode || node instanceof ParameterNode ||
 157                         node instanceof CallTargetNode || node instanceof ValueProxy || node instanceof VirtualObjectNode || node instanceof ReinterpretNode) {
 158             return 0;
 159         } else if (node instanceof AccessMonitorNode) {
 160             return 10;
 161         } else if (node instanceof Access) {
 162             return 2;
 163         } else if (node instanceof LogicNode || node instanceof ConvertNode || node instanceof BinaryNode || node instanceof NotNode) {
 164             return 1;
 165         } else if (node instanceof IntegerDivRemNode || node instanceof DivNode || node instanceof RemNode) {
 166             return 10;
 167         } else if (node instanceof MulNode) {
 168             return 3;
 169         } else if (node instanceof Invoke) {
 170             return 5;
 171         } else if (node instanceof IfNode || node instanceof SafepointNode) {
 172             return 1;
 173         } else if (node instanceof SwitchNode) {
 174             return node.successors().count();
 175         } else if (node instanceof ReturnNode || node instanceof UnwindNode || node instanceof DeoptimizeNode) {
 176             return node.successors().count();
 177         } else if (node instanceof AbstractNewObjectNode) {
 178             return 10;
 179         } else if (node instanceof VirtualState) {
 180             return 0;
 181         }
 182         return 2;
 183     }
 184 
 185     private static boolean hasInvoke(Collection<Block> blocks) {


  31 import org.graalvm.compiler.nodes.AbstractBeginNode;
  32 import org.graalvm.compiler.nodes.AbstractEndNode;
  33 import org.graalvm.compiler.nodes.AbstractMergeNode;
  34 import org.graalvm.compiler.nodes.CallTargetNode;
  35 import org.graalvm.compiler.nodes.ConstantNode;
  36 import org.graalvm.compiler.nodes.DeoptimizeNode;
  37 import org.graalvm.compiler.nodes.FixedNode;
  38 import org.graalvm.compiler.nodes.FixedWithNextNode;
  39 import org.graalvm.compiler.nodes.IfNode;
  40 import org.graalvm.compiler.nodes.Invoke;
  41 import org.graalvm.compiler.nodes.LogicNode;
  42 import org.graalvm.compiler.nodes.ParameterNode;
  43 import org.graalvm.compiler.nodes.ReturnNode;
  44 import org.graalvm.compiler.nodes.SafepointNode;
  45 import org.graalvm.compiler.nodes.StructuredGraph;
  46 import org.graalvm.compiler.nodes.StructuredGraph.ScheduleResult;
  47 import org.graalvm.compiler.nodes.UnwindNode;
  48 import org.graalvm.compiler.nodes.VirtualState;
  49 import org.graalvm.compiler.nodes.calc.BinaryNode;
  50 import org.graalvm.compiler.nodes.calc.ConvertNode;
  51 import org.graalvm.compiler.nodes.calc.FloatDivNode;
  52 import org.graalvm.compiler.nodes.calc.IntegerDivRemNode;
  53 import org.graalvm.compiler.nodes.calc.MulNode;
  54 import org.graalvm.compiler.nodes.calc.NotNode;
  55 import org.graalvm.compiler.nodes.calc.ReinterpretNode;
  56 import org.graalvm.compiler.nodes.calc.RemNode;
  57 import org.graalvm.compiler.nodes.cfg.Block;
  58 import org.graalvm.compiler.nodes.cfg.ControlFlowGraph;
  59 import org.graalvm.compiler.nodes.debug.DynamicCounterNode;
  60 import org.graalvm.compiler.nodes.extended.SwitchNode;
  61 import org.graalvm.compiler.nodes.java.AbstractNewObjectNode;
  62 import org.graalvm.compiler.nodes.java.AccessMonitorNode;
  63 import org.graalvm.compiler.nodes.java.MonitorIdNode;
  64 import org.graalvm.compiler.nodes.memory.Access;
  65 import org.graalvm.compiler.nodes.spi.ValueProxy;
  66 import org.graalvm.compiler.nodes.virtual.VirtualObjectNode;
  67 import org.graalvm.compiler.phases.Phase;
  68 import org.graalvm.compiler.phases.schedule.SchedulePhase;
  69 
  70 /**
  71  * This phase add counters for the dynamically executed number of nodes. Incrementing the counter


 145             double blockProbability = block.probability();
 146             for (Node node : schedule.getBlockToNodesMap().get(block)) {
 147                 count += blockProbability * getNodeWeight(node);
 148             }
 149         }
 150         return count;
 151     }
 152 
 153     private static double getNodeWeight(Node node) {
 154         if (node instanceof AbstractMergeNode) {
 155             return ((AbstractMergeNode) node).phiPredecessorCount();
 156         } else if (node instanceof AbstractBeginNode || node instanceof AbstractEndNode || node instanceof MonitorIdNode || node instanceof ConstantNode || node instanceof ParameterNode ||
 157                         node instanceof CallTargetNode || node instanceof ValueProxy || node instanceof VirtualObjectNode || node instanceof ReinterpretNode) {
 158             return 0;
 159         } else if (node instanceof AccessMonitorNode) {
 160             return 10;
 161         } else if (node instanceof Access) {
 162             return 2;
 163         } else if (node instanceof LogicNode || node instanceof ConvertNode || node instanceof BinaryNode || node instanceof NotNode) {
 164             return 1;
 165         } else if (node instanceof IntegerDivRemNode || node instanceof FloatDivNode || node instanceof RemNode) {
 166             return 10;
 167         } else if (node instanceof MulNode) {
 168             return 3;
 169         } else if (node instanceof Invoke) {
 170             return 5;
 171         } else if (node instanceof IfNode || node instanceof SafepointNode) {
 172             return 1;
 173         } else if (node instanceof SwitchNode) {
 174             return node.successors().count();
 175         } else if (node instanceof ReturnNode || node instanceof UnwindNode || node instanceof DeoptimizeNode) {
 176             return node.successors().count();
 177         } else if (node instanceof AbstractNewObjectNode) {
 178             return 10;
 179         } else if (node instanceof VirtualState) {
 180             return 0;
 181         }
 182         return 2;
 183     }
 184 
 185     private static boolean hasInvoke(Collection<Block> blocks) {
< prev index next >