< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/cfg/Block.java

Print this page
rev 52509 : [mq]: graal2


  33 import org.graalvm.compiler.graph.Node;
  34 import org.graalvm.compiler.nodeinfo.Verbosity;
  35 import org.graalvm.compiler.nodes.AbstractBeginNode;
  36 import org.graalvm.compiler.nodes.BeginNode;
  37 import org.graalvm.compiler.nodes.FixedNode;
  38 import org.graalvm.compiler.nodes.FixedWithNextNode;
  39 import org.graalvm.compiler.nodes.InvokeWithExceptionNode;
  40 import org.graalvm.compiler.nodes.LoopBeginNode;
  41 import org.graalvm.compiler.nodes.LoopEndNode;
  42 import org.graalvm.compiler.nodes.LoopExitNode;
  43 import org.graalvm.compiler.nodes.memory.MemoryCheckpoint;
  44 import jdk.internal.vm.compiler.word.LocationIdentity;
  45 
  46 public final class Block extends AbstractBlockBase<Block> {
  47     public static final Block[] EMPTY_ARRAY = new Block[0];
  48 
  49     protected final AbstractBeginNode beginNode;
  50 
  51     protected FixedNode endNode;
  52 
  53     protected double probability;
  54     private Loop<Block> loop;
  55 
  56     protected Block postdominator;
  57     private LocationSet killLocations;
  58     private LocationSet killLocationsBetweenThisAndDominator;
  59 
  60     public Block(AbstractBeginNode node) {
  61         this.beginNode = node;
  62     }
  63 
  64     public AbstractBeginNode getBeginNode() {
  65         return beginNode;
  66     }
  67 
  68     public FixedNode getEndNode() {
  69         return endNode;
  70     }
  71 
  72     /**
  73      * Return the {@link LoopExitNode} for this block if it exists.


 219                     }
 220                     sb.append('B').append(getSuccessors()[i].getId());
 221                 }
 222                 sb.append(']');
 223             }
 224 
 225             if (getPredecessorCount() > 0) {
 226                 sb.append(" <-[");
 227                 for (int i = 0; i < getPredecessorCount(); ++i) {
 228                     if (i != 0) {
 229                         sb.append(',');
 230                     }
 231                     sb.append('B').append(getPredecessors()[i].getId());
 232                 }
 233                 sb.append(']');
 234             }
 235         }
 236         return sb.toString();
 237     }
 238 




 239     @Override
 240     public double probability() {
 241         return probability;
 242     }
 243 
 244     public void setProbability(double probability) {
 245         assert probability >= 0 && Double.isFinite(probability);
 246         this.probability = probability;
 247     }
 248 
 249     @Override
 250     public Block getDominator(int distance) {
 251         Block result = this;
 252         for (int i = 0; i < distance; ++i) {
 253             result = result.getDominator();
 254         }
 255         return result;
 256     }
 257 
 258     public boolean canKill(LocationIdentity location) {
 259         if (location.isImmutable()) {
 260             return false;
 261         }
 262         return getKillLocations().contains(location);
 263     }
 264 
 265     public LocationSet getKillLocations() {
 266         if (killLocations == null) {




  33 import org.graalvm.compiler.graph.Node;
  34 import org.graalvm.compiler.nodeinfo.Verbosity;
  35 import org.graalvm.compiler.nodes.AbstractBeginNode;
  36 import org.graalvm.compiler.nodes.BeginNode;
  37 import org.graalvm.compiler.nodes.FixedNode;
  38 import org.graalvm.compiler.nodes.FixedWithNextNode;
  39 import org.graalvm.compiler.nodes.InvokeWithExceptionNode;
  40 import org.graalvm.compiler.nodes.LoopBeginNode;
  41 import org.graalvm.compiler.nodes.LoopEndNode;
  42 import org.graalvm.compiler.nodes.LoopExitNode;
  43 import org.graalvm.compiler.nodes.memory.MemoryCheckpoint;
  44 import jdk.internal.vm.compiler.word.LocationIdentity;
  45 
  46 public final class Block extends AbstractBlockBase<Block> {
  47     public static final Block[] EMPTY_ARRAY = new Block[0];
  48 
  49     protected final AbstractBeginNode beginNode;
  50 
  51     protected FixedNode endNode;
  52 
  53     protected double relativeFrequency;
  54     private Loop<Block> loop;
  55 
  56     protected Block postdominator;
  57     private LocationSet killLocations;
  58     private LocationSet killLocationsBetweenThisAndDominator;
  59 
  60     public Block(AbstractBeginNode node) {
  61         this.beginNode = node;
  62     }
  63 
  64     public AbstractBeginNode getBeginNode() {
  65         return beginNode;
  66     }
  67 
  68     public FixedNode getEndNode() {
  69         return endNode;
  70     }
  71 
  72     /**
  73      * Return the {@link LoopExitNode} for this block if it exists.


 219                     }
 220                     sb.append('B').append(getSuccessors()[i].getId());
 221                 }
 222                 sb.append(']');
 223             }
 224 
 225             if (getPredecessorCount() > 0) {
 226                 sb.append(" <-[");
 227                 for (int i = 0; i < getPredecessorCount(); ++i) {
 228                     if (i != 0) {
 229                         sb.append(',');
 230                     }
 231                     sb.append('B').append(getPredecessors()[i].getId());
 232                 }
 233                 sb.append(']');
 234             }
 235         }
 236         return sb.toString();
 237     }
 238 
 239     /**
 240      * The execution frequency of this block relative to the start block as estimated by the
 241      * profiling information.
 242      */
 243     @Override
 244     public double getRelativeFrequency() {
 245         return relativeFrequency;
 246     }
 247 
 248     public void setRelativeFrequency(double relativeFrequency) {
 249         assert relativeFrequency >= 0 && Double.isFinite(relativeFrequency);
 250         this.relativeFrequency = relativeFrequency;
 251     }
 252 
 253     @Override
 254     public Block getDominator(int distance) {
 255         Block result = this;
 256         for (int i = 0; i < distance; ++i) {
 257             result = result.getDominator();
 258         }
 259         return result;
 260     }
 261 
 262     public boolean canKill(LocationIdentity location) {
 263         if (location.isImmutable()) {
 264             return false;
 265         }
 266         return getKillLocations().contains(location);
 267     }
 268 
 269     public LocationSet getKillLocations() {
 270         if (killLocations == null) {


< prev index next >