# HG changeset patch # User Roland Schatz # Date 1428406209 -7200 # Node ID 617943492e0080a6c7e1921387da8e8552d282ab # Parent 03b4fa99eff890961ba3a75371b9690685115a4d UnsafeArrayCopyNode is a MemoryAccess. diff -r 03b4fa99eff8 -r 617943492e00 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java Tue Apr 07 12:21:08 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java Tue Apr 07 13:30:09 2015 +0200 @@ -34,7 +34,7 @@ import com.oracle.graal.replacements.SnippetTemplate.Arguments; @NodeInfo(allowedUsageTypes = {InputType.Memory}) -public final class UnsafeArrayCopyNode extends ArrayRangeWriteNode implements Lowerable, MemoryCheckpoint.Single { +public final class UnsafeArrayCopyNode extends ArrayRangeWriteNode implements Lowerable, MemoryCheckpoint.Single, MemoryAccess { public static final NodeClass TYPE = NodeClass.create(UnsafeArrayCopyNode.class); @Input ValueNode src; @@ -44,6 +44,8 @@ @Input ValueNode length; @OptionalInput ValueNode layoutHelper; + @OptionalInput(InputType.Memory) MemoryNode lastLocationAccess; + protected Kind elementKind; public UnsafeArrayCopyNode(ValueNode src, ValueNode srcPos, ValueNode dest, ValueNode destPos, ValueNode length, ValueNode layoutHelper, Kind elementKind) { @@ -122,6 +124,15 @@ return any(); } + public MemoryNode getLastLocationAccess() { + return lastLocationAccess; + } + + public void setLastLocationAccess(MemoryNode lla) { + updateUsagesInterface(lastLocationAccess, lla); + lastLocationAccess = lla; + } + @NodeIntrinsic public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length, @ConstantNodeParameter Kind elementKind);