< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/arraycopy/ArrayCopyNode.java

Print this page

        

*** 33,59 **** import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode; import jdk.internal.vm.compiler.word.LocationIdentity; - import jdk.vm.ci.meta.JavaKind; - @NodeInfo public final class ArrayCopyNode extends BasicArrayCopyNode implements Lowerable { public static final NodeClass<ArrayCopyNode> TYPE = NodeClass.create(ArrayCopyNode.class); ! private JavaKind elementKind; public ArrayCopyNode(int bci, ValueNode src, ValueNode srcPos, ValueNode dst, ValueNode dstPos, ValueNode length) { super(TYPE, src, srcPos, dst, dstPos, length, null, bci); ! elementKind = ArrayCopySnippets.Templates.selectComponentKind(this); } @Override public LocationIdentity getLocationIdentity() { ! if (elementKind == null) { elementKind = ArrayCopySnippets.Templates.selectComponentKind(this); } if (elementKind != null) { return NamedLocationIdentity.getArrayLocation(elementKind); } --- 33,66 ---- import org.graalvm.compiler.nodes.spi.Lowerable; import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.replacements.nodes.BasicArrayCopyNode; import jdk.internal.vm.compiler.word.LocationIdentity; @NodeInfo public final class ArrayCopyNode extends BasicArrayCopyNode implements Lowerable { public static final NodeClass<ArrayCopyNode> TYPE = NodeClass.create(ArrayCopyNode.class); ! protected final boolean forceAnyLocation; public ArrayCopyNode(int bci, ValueNode src, ValueNode srcPos, ValueNode dst, ValueNode dstPos, ValueNode length) { + this(bci, src, srcPos, dst, dstPos, length, false); + } + + public ArrayCopyNode(int bci, ValueNode src, ValueNode srcPos, ValueNode dst, ValueNode dstPos, ValueNode length, boolean forceAnyLocation) { super(TYPE, src, srcPos, dst, dstPos, length, null, bci); ! this.forceAnyLocation = forceAnyLocation; ! if (!forceAnyLocation) { ! elementKind = ArrayCopySnippets.Templates.selectComponentKind(this); ! } else { ! assert elementKind == null; ! } } @Override public LocationIdentity getLocationIdentity() { ! if (!forceAnyLocation && elementKind == null) { elementKind = ArrayCopySnippets.Templates.selectComponentKind(this); } if (elementKind != null) { return NamedLocationIdentity.getArrayLocation(elementKind); }
*** 62,67 **** --- 69,78 ---- @Override public void lower(LoweringTool tool) { tool.getLowerer().lower(this, tool); } + + public boolean killsAnyLocation() { + return forceAnyLocation; + } }
< prev index next >