# HG changeset patch # User Christos Kotselidis # Date 1364511447 -3600 # Node ID 1c181c2cfb68b743ae8aac6933613c227cb4b3e5 # Parent 59eb5a38df56ec6543bc47b6627104a901ff405b Reverse ArrayCopy WB Intrisification diff -r 59eb5a38df56 -r 1c181c2cfb68 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrierPost.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrierPost.java Thu Mar 28 23:41:37 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrierPost.java Thu Mar 28 23:57:27 2013 +0100 @@ -22,12 +22,9 @@ */ package com.oracle.graal.hotspot.nodes; -<<<<<<< local -======= import static com.oracle.graal.hotspot.replacements.HotSpotSnippetUtils.*; import com.oracle.graal.api.meta.*; ->>>>>>> other import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.spi.*; @@ -73,17 +70,8 @@ this.value = value; this.location = location; this.precise = precise; -<<<<<<< local } - public void lower(LoweringTool generator) { - generator.getRuntime().lower(this, generator); -======= ->>>>>>> other - } -<<<<<<< local -======= - @Override public void lower(LoweringTool generator) { StructuredGraph graph = (StructuredGraph) this.graph(); @@ -106,5 +94,4 @@ @NodeIntrinsic public static native void arrayCopyWriteBarrier(Object array, Object value, long index); ->>>>>>> other } diff -r 59eb5a38df56 -r 1c181c2cfb68 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java Thu Mar 28 23:41:37 2013 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java Thu Mar 28 23:57:27 2013 +0100 @@ -247,29 +247,15 @@ int header = arrayBaseOffset(Kind.Object); if (src == dest && srcPos < destPos) { // bad aliased case long start = (long) (length - 1) * scale; -<<<<<<< local -======= - long j = (long) (length) - 1; ->>>>>>> other for (long i = start; i >= 0; i -= scale) { Object a = UnsafeLoadNode.load(src, header, i + (long) srcPos * scale, Kind.Object); DirectObjectStoreNode.storeObject(dest, header, i + (long) destPos * scale, a); -<<<<<<< local -======= - WriteBarrierPost.arrayCopyWriteBarrier(dest, a, j); - j--; ->>>>>>> other } } else { long end = (long) length * scale; -<<<<<<< local -======= - long j = srcPos; ->>>>>>> other for (long i = 0; i < end; i += scale) { Object a = UnsafeLoadNode.load(src, header, i + (long) srcPos * scale, Kind.Object); DirectObjectStoreNode.storeObject(dest, header, i + (long) destPos * scale, a); -<<<<<<< local } } if (length > 0) { @@ -281,10 +267,6 @@ long count = end - start + 1; while (count-- > 0) { DirectStoreNode.store((start + cardStart) + count, false, Kind.Boolean); -======= - WriteBarrierPost.arrayCopyWriteBarrier(dest, a, j); - j++; ->>>>>>> other } } }