src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.phases.common/src/org/graalvm/compiler/phases/common/AddressLoweringPhase.java
changeset 48861 47f19ff9903c
parent 48190 25cfedf27edc
child 50858 2d3e99a72541
equal deleted inserted replaced
48860:5bce1b7e7800 48861:47f19ff9903c
    31 import org.graalvm.compiler.phases.Phase;
    31 import org.graalvm.compiler.phases.Phase;
    32 
    32 
    33 public class AddressLoweringPhase extends Phase {
    33 public class AddressLoweringPhase extends Phase {
    34 
    34 
    35     public abstract static class AddressLowering {
    35     public abstract static class AddressLowering {
       
    36 
       
    37         @SuppressWarnings("unused")
       
    38         public void preProcess(StructuredGraph graph) {
       
    39         }
       
    40 
       
    41         @SuppressWarnings("unused")
       
    42         public void postProcess(AddressNode lowered) {
       
    43         }
       
    44 
    36         public abstract AddressNode lower(ValueNode base, ValueNode offset);
    45         public abstract AddressNode lower(ValueNode base, ValueNode offset);
    37     }
    46     }
    38 
    47 
    39     private final AddressLowering lowering;
    48     private final AddressLowering lowering;
    40 
    49 
    43         assert lowering != null;
    52         assert lowering != null;
    44     }
    53     }
    45 
    54 
    46     @Override
    55     @Override
    47     protected void run(StructuredGraph graph) {
    56     protected void run(StructuredGraph graph) {
       
    57         lowering.preProcess(graph);
    48         for (Node node : graph.getNodes()) {
    58         for (Node node : graph.getNodes()) {
    49             AddressNode lowered;
    59             AddressNode lowered;
    50             if (node instanceof OffsetAddressNode) {
    60             if (node instanceof OffsetAddressNode) {
    51                 OffsetAddressNode address = (OffsetAddressNode) node;
    61                 OffsetAddressNode address = (OffsetAddressNode) node;
    52                 lowered = lowering.lower(address.getBase(), address.getOffset());
    62                 lowered = lowering.lower(address.getBase(), address.getOffset());
       
    63                 lowering.postProcess(lowered);
    53             } else {
    64             } else {
    54                 continue;
    65                 continue;
    55             }
    66             }
    56             node.replaceAtUsages(lowered);
    67             node.replaceAtUsages(lowered);
    57             GraphUtil.killWithUnusedFloatingInputs(node);
    68             GraphUtil.killWithUnusedFloatingInputs(node);