changeset 5193:02da376dd213

abstracted word size in object array copy
author Doug Simon <doug.simon@oracle.com>
date Wed, 04 Apr 2012 12:08:52 +0200
parents 20993edddd73
children a6eceb5efb0e
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ArrayCopySnippets.java
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ArrayCopySnippets.java	Wed Apr 04 09:19:44 2012 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/ArrayCopySnippets.java	Wed Apr 04 12:08:52 2012 +0200
@@ -280,7 +280,7 @@
     @Snippet
     public static void copyObjectsDown(Object src, long srcOffset, Object dest, long destOffset, int length)  {
         int header = arrayHeaderSizeFor(CiKind.Object);
-        for (long i = (length - 1) * 8; i >= 0; i -= 8) {
+        for (long i = (length - 1) * wordSize(); i >= 0; i -= wordSize()) {
             Object a = UnsafeLoadNode.load(src, header, i + srcOffset, CiKind.Object);
             DirectObjectStoreNode.store(dest, header, i + destOffset, a);
         }
@@ -341,7 +341,7 @@
     @Snippet
     public static void copyObjectsUp(Object src, long srcOffset, Object dest, long destOffset, int length)  {
         int header = arrayHeaderSizeFor(CiKind.Object);
-        for (long i = 0; i < length * 8L; i += 8) {
+        for (long i = 0; i < length * wordSize(); i += wordSize()) {
             Object a = UnsafeLoadNode.load(src, header, i + srcOffset, CiKind.Object);
             DirectObjectStoreNode.store(dest, header, i + destOffset, a);
         }
@@ -426,6 +426,11 @@
     }
 
     @Fold
+    private static int wordSize() {
+        return CompilerImpl.getInstance().getTarget().wordSize;
+    }
+
+    @Fold
     private static int arrayHeaderSizeFor(CiKind elementKind) {
         return CompilerImpl.getInstance().getConfig().getArrayOffset(elementKind);
     }