src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/EntryMarkerNode.java
changeset 57537 ecc6e394475f
parent 52910 583fd71c47d6
equal deleted inserted replaced
57536:67cce1b84a9a 57537:ecc6e394475f
    28 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0;
    28 import static org.graalvm.compiler.nodeinfo.NodeCycles.CYCLES_0;
    29 import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0;
    29 import static org.graalvm.compiler.nodeinfo.NodeSize.SIZE_0;
    30 
    30 
    31 import org.graalvm.compiler.debug.GraalError;
    31 import org.graalvm.compiler.debug.GraalError;
    32 import org.graalvm.compiler.graph.IterableNodeType;
    32 import org.graalvm.compiler.graph.IterableNodeType;
       
    33 import org.graalvm.compiler.graph.Node;
    33 import org.graalvm.compiler.graph.NodeClass;
    34 import org.graalvm.compiler.graph.NodeClass;
       
    35 import org.graalvm.compiler.graph.iterators.NodeIterable;
    34 import org.graalvm.compiler.nodeinfo.NodeInfo;
    36 import org.graalvm.compiler.nodeinfo.NodeInfo;
    35 import org.graalvm.compiler.nodes.spi.LIRLowerable;
    37 import org.graalvm.compiler.nodes.spi.LIRLowerable;
    36 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool;
    38 import org.graalvm.compiler.nodes.spi.NodeLIRBuilderTool;
    37 
    39 
    38 /**
    40 /**
    49 
    51 
    50     @Override
    52     @Override
    51     public void generate(NodeLIRBuilderTool gen) {
    53     public void generate(NodeLIRBuilderTool gen) {
    52         throw new GraalError("OnStackReplacementNode should not survive");
    54         throw new GraalError("OnStackReplacementNode should not survive");
    53     }
    55     }
       
    56 
       
    57     @Override
       
    58     public NodeIterable<Node> anchored() {
       
    59         return super.anchored().filter(n -> {
       
    60             if (n instanceof EntryProxyNode) {
       
    61                 EntryProxyNode proxyNode = (EntryProxyNode) n;
       
    62                 return proxyNode.proxyPoint != this;
       
    63             }
       
    64             return true;
       
    65         });
       
    66     }
       
    67 
       
    68     @Override
       
    69     public void prepareDelete(FixedNode evacuateFrom) {
       
    70         for (Node usage : usages().filter(EntryProxyNode.class).snapshot()) {
       
    71             EntryProxyNode proxy = (EntryProxyNode) usage;
       
    72             proxy.replaceAndDelete(proxy.value());
       
    73         }
       
    74         super.prepareDelete(evacuateFrom);
       
    75     }
    54 }
    76 }