Mercurial > hg > graal-compiler
changeset 20177:617943492e00
UnsafeArrayCopyNode is a MemoryAccess.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Tue, 07 Apr 2015 13:30:09 +0200 |
parents | 03b4fa99eff8 |
children | 7ba8fb19d56d |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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<UnsafeArrayCopyNode> 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);