< prev index next >

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

Print this page
rev 52509 : [mq]: graal


  43 import org.graalvm.compiler.nodes.BinaryOpLogicNode;
  44 import org.graalvm.compiler.nodes.ConstantNode;
  45 import org.graalvm.compiler.nodes.EndNode;
  46 import org.graalvm.compiler.nodes.IfNode;
  47 import org.graalvm.compiler.nodes.LogicNode;
  48 import org.graalvm.compiler.nodes.MergeNode;
  49 import org.graalvm.compiler.nodes.NodeView;
  50 import org.graalvm.compiler.nodes.PhiNode;
  51 import org.graalvm.compiler.nodes.PiNode;
  52 import org.graalvm.compiler.nodes.StructuredGraph;
  53 import org.graalvm.compiler.nodes.StructuredGraph.ScheduleResult;
  54 import org.graalvm.compiler.nodes.UnaryOpLogicNode;
  55 import org.graalvm.compiler.nodes.ValueNode;
  56 import org.graalvm.compiler.nodes.ValuePhiNode;
  57 import org.graalvm.compiler.nodes.calc.BinaryNode;
  58 import org.graalvm.compiler.nodes.calc.ConditionalNode;
  59 import org.graalvm.compiler.nodes.calc.UnaryNode;
  60 import org.graalvm.compiler.nodes.cfg.Block;
  61 import org.graalvm.compiler.nodes.cfg.ControlFlowGraph;
  62 import org.graalvm.compiler.nodes.cfg.ControlFlowGraph.RecursiveVisitor;

  63 import org.graalvm.compiler.nodes.extended.IntegerSwitchNode;
  64 import org.graalvm.compiler.nodes.memory.FixedAccessNode;
  65 import org.graalvm.compiler.nodes.memory.FloatingAccessNode;
  66 import org.graalvm.compiler.nodes.memory.FloatingReadNode;
  67 import org.graalvm.compiler.nodes.memory.MemoryAccess;
  68 import org.graalvm.compiler.nodes.memory.MemoryPhiNode;
  69 import org.graalvm.compiler.nodes.util.GraphUtil;
  70 import org.graalvm.compiler.phases.BasePhase;
  71 import org.graalvm.compiler.phases.Phase;
  72 import org.graalvm.compiler.phases.graph.ScheduledNodeIterator;
  73 import org.graalvm.compiler.phases.schedule.SchedulePhase;
  74 import org.graalvm.compiler.phases.schedule.SchedulePhase.SchedulingStrategy;
  75 import org.graalvm.compiler.phases.tiers.LowTierContext;
  76 import org.graalvm.compiler.phases.tiers.PhaseContext;
  77 
  78 import jdk.vm.ci.meta.Constant;
  79 import jdk.vm.ci.meta.MetaAccessProvider;
  80 import jdk.vm.ci.meta.TriState;
  81 
  82 /**


  97 
  98     @Override
  99     public float codeSizeIncrease() {
 100         return 2.0f;
 101     }
 102 
 103     private static class FixReadsClosure extends ScheduledNodeIterator {
 104 
 105         @Override
 106         protected void processNode(Node node) {
 107             if (node instanceof AbstractMergeNode) {
 108                 AbstractMergeNode mergeNode = (AbstractMergeNode) node;
 109                 for (MemoryPhiNode memoryPhi : mergeNode.memoryPhis().snapshot()) {
 110                     // Memory phi nodes are no longer necessary at this point.
 111                     memoryPhi.replaceAtUsages(null);
 112                     memoryPhi.safeDelete();
 113                 }
 114             } else if (node instanceof FloatingAccessNode) {
 115                 FloatingAccessNode floatingAccessNode = (FloatingAccessNode) node;
 116                 floatingAccessNode.setLastLocationAccess(null);





 117                 FixedAccessNode fixedAccess = floatingAccessNode.asFixedNode();
 118                 replaceCurrent(fixedAccess);
 119             } else if (node instanceof PiNode) {
 120                 PiNode piNode = (PiNode) node;
 121                 if (piNode.stamp(NodeView.DEFAULT).isCompatible(piNode.getOriginalNode().stamp(NodeView.DEFAULT))) {
 122                     // Pi nodes are no longer necessary at this point.
 123                     piNode.replaceAndDelete(piNode.getOriginalNode());
 124                 }
 125             } else if (node instanceof MemoryAccess) {
 126                 MemoryAccess memoryAccess = (MemoryAccess) node;
 127                 memoryAccess.setLastLocationAccess(null);
 128             }
 129         }
 130 
 131     }
 132 
 133     protected static class RawConditionalEliminationVisitor implements RecursiveVisitor<Integer> {
 134 
 135         protected final NodeMap<StampElement> stampMap;
 136         protected final NodeStack undoOperations;




  43 import org.graalvm.compiler.nodes.BinaryOpLogicNode;
  44 import org.graalvm.compiler.nodes.ConstantNode;
  45 import org.graalvm.compiler.nodes.EndNode;
  46 import org.graalvm.compiler.nodes.IfNode;
  47 import org.graalvm.compiler.nodes.LogicNode;
  48 import org.graalvm.compiler.nodes.MergeNode;
  49 import org.graalvm.compiler.nodes.NodeView;
  50 import org.graalvm.compiler.nodes.PhiNode;
  51 import org.graalvm.compiler.nodes.PiNode;
  52 import org.graalvm.compiler.nodes.StructuredGraph;
  53 import org.graalvm.compiler.nodes.StructuredGraph.ScheduleResult;
  54 import org.graalvm.compiler.nodes.UnaryOpLogicNode;
  55 import org.graalvm.compiler.nodes.ValueNode;
  56 import org.graalvm.compiler.nodes.ValuePhiNode;
  57 import org.graalvm.compiler.nodes.calc.BinaryNode;
  58 import org.graalvm.compiler.nodes.calc.ConditionalNode;
  59 import org.graalvm.compiler.nodes.calc.UnaryNode;
  60 import org.graalvm.compiler.nodes.cfg.Block;
  61 import org.graalvm.compiler.nodes.cfg.ControlFlowGraph;
  62 import org.graalvm.compiler.nodes.cfg.ControlFlowGraph.RecursiveVisitor;
  63 import org.graalvm.compiler.nodes.extended.GuardingNode;
  64 import org.graalvm.compiler.nodes.extended.IntegerSwitchNode;
  65 import org.graalvm.compiler.nodes.memory.FixedAccessNode;
  66 import org.graalvm.compiler.nodes.memory.FloatingAccessNode;
  67 import org.graalvm.compiler.nodes.memory.FloatingReadNode;
  68 import org.graalvm.compiler.nodes.memory.MemoryAccess;
  69 import org.graalvm.compiler.nodes.memory.MemoryPhiNode;
  70 import org.graalvm.compiler.nodes.util.GraphUtil;
  71 import org.graalvm.compiler.phases.BasePhase;
  72 import org.graalvm.compiler.phases.Phase;
  73 import org.graalvm.compiler.phases.graph.ScheduledNodeIterator;
  74 import org.graalvm.compiler.phases.schedule.SchedulePhase;
  75 import org.graalvm.compiler.phases.schedule.SchedulePhase.SchedulingStrategy;
  76 import org.graalvm.compiler.phases.tiers.LowTierContext;
  77 import org.graalvm.compiler.phases.tiers.PhaseContext;
  78 
  79 import jdk.vm.ci.meta.Constant;
  80 import jdk.vm.ci.meta.MetaAccessProvider;
  81 import jdk.vm.ci.meta.TriState;
  82 
  83 /**


  98 
  99     @Override
 100     public float codeSizeIncrease() {
 101         return 2.0f;
 102     }
 103 
 104     private static class FixReadsClosure extends ScheduledNodeIterator {
 105 
 106         @Override
 107         protected void processNode(Node node) {
 108             if (node instanceof AbstractMergeNode) {
 109                 AbstractMergeNode mergeNode = (AbstractMergeNode) node;
 110                 for (MemoryPhiNode memoryPhi : mergeNode.memoryPhis().snapshot()) {
 111                     // Memory phi nodes are no longer necessary at this point.
 112                     memoryPhi.replaceAtUsages(null);
 113                     memoryPhi.safeDelete();
 114                 }
 115             } else if (node instanceof FloatingAccessNode) {
 116                 FloatingAccessNode floatingAccessNode = (FloatingAccessNode) node;
 117                 floatingAccessNode.setLastLocationAccess(null);
 118                 GuardingNode guard = floatingAccessNode.getGuard();
 119                 if (guard != null) {
 120                     floatingAccessNode.setGuard(null);
 121                     GraphUtil.tryKillUnused(guard.asNode());
 122                 }
 123                 FixedAccessNode fixedAccess = floatingAccessNode.asFixedNode();
 124                 replaceCurrent(fixedAccess);
 125             } else if (node instanceof PiNode) {
 126                 PiNode piNode = (PiNode) node;
 127                 if (piNode.stamp(NodeView.DEFAULT).isCompatible(piNode.getOriginalNode().stamp(NodeView.DEFAULT))) {
 128                     // Pi nodes are no longer necessary at this point.
 129                     piNode.replaceAndDelete(piNode.getOriginalNode());
 130                 }
 131             } else if (node instanceof MemoryAccess) {
 132                 MemoryAccess memoryAccess = (MemoryAccess) node;
 133                 memoryAccess.setLastLocationAccess(null);
 134             }
 135         }
 136 
 137     }
 138 
 139     protected static class RawConditionalEliminationVisitor implements RecursiveVisitor<Integer> {
 140 
 141         protected final NodeMap<StampElement> stampMap;
 142         protected final NodeStack undoOperations;


< prev index next >