jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template
changeset 36222 dfed693e648b
parent 35641 da165fd9c886
child 36933 3e6453e2d833
--- a/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template	Wed Mar 02 20:36:00 2016 +0100
+++ b/jdk/src/java.base/share/classes/java/nio/Direct-X-Buffer.java.template	Wed Mar 02 13:21:20 2016 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -270,16 +270,22 @@
             if (length > rem)
                 throw new BufferUnderflowException();
 
+            long dstOffset = arrayBaseOffset + ((long)offset << $LG_BYTES_PER_VALUE$);
 #if[!byte]
             if (order() != ByteOrder.nativeOrder())
-                Bits.copyTo$Memtype$Array(ix(pos), dst,
-                                          (long)offset << $LG_BYTES_PER_VALUE$,
-                                          (long)length << $LG_BYTES_PER_VALUE$);
+                unsafe.copySwapMemory(null,
+                                      ix(pos),
+                                      dst,
+                                      dstOffset,
+                                      (long)length << $LG_BYTES_PER_VALUE$,
+                                      (long)1 << $LG_BYTES_PER_VALUE$);
             else
 #end[!byte]
-                Bits.copyToArray(ix(pos), dst, arrayBaseOffset,
-                                 (long)offset << $LG_BYTES_PER_VALUE$,
-                                 (long)length << $LG_BYTES_PER_VALUE$);
+                unsafe.copyMemory(null,
+                                  ix(pos),
+                                  dst,
+                                  dstOffset,
+                                  (long)length << $LG_BYTES_PER_VALUE$);
             position(pos + length);
         } else {
             super.get(dst, offset, length);
@@ -362,18 +368,22 @@
             if (length > rem)
                 throw new BufferOverflowException();
 
+            long srcOffset = arrayBaseOffset + ((long)offset << $LG_BYTES_PER_VALUE$);
 #if[!byte]
             if (order() != ByteOrder.nativeOrder())
-                Bits.copyFrom$Memtype$Array(src,
-                                            (long)offset << $LG_BYTES_PER_VALUE$,
-                                            ix(pos),
-                                            (long)length << $LG_BYTES_PER_VALUE$);
+                unsafe.copySwapMemory(src,
+                                      srcOffset,
+                                      null,
+                                      ix(pos),
+                                      (long)length << $LG_BYTES_PER_VALUE$,
+                                      (long)1 << $LG_BYTES_PER_VALUE$);
             else
 #end[!byte]
-                Bits.copyFromArray(src, arrayBaseOffset,
-                                   (long)offset << $LG_BYTES_PER_VALUE$,
-                                   ix(pos),
-                                   (long)length << $LG_BYTES_PER_VALUE$);
+                unsafe.copyMemory(src,
+                                  srcOffset,
+                                  null,
+                                  ix(pos),
+                                  (long)length << $LG_BYTES_PER_VALUE$);
             position(pos + length);
         } else {
             super.put(src, offset, length);