< prev index next >

test/jdk/java/foreign/TestArrayCopy.java

Print this page
@@ -21,16 +21,19 @@
   * questions.
   */
  
  /*
   * @test
-  * @enablePreview
   * @run testng TestArrayCopy
   */
  
+ import java.lang.foreign.MemoryLayout;
  import java.lang.foreign.MemorySegment;
  import java.lang.foreign.ValueLayout;
+ import java.lang.invoke.MethodHandle;
+ import java.lang.invoke.MethodHandles;
+ import java.lang.invoke.MethodType;
  import java.lang.invoke.VarHandle;
  import java.nio.ByteOrder;
  import java.util.ArrayList;
  import java.util.List;
  import org.testng.annotations.DataProvider;

@@ -286,13 +289,18 @@
              arr[i] = (byte)i;
          }
          return MemorySegment.ofArray(arr);
      }
  
+     private static VarHandle arrayVarHandle(ValueLayout layout) {
+         return MethodHandles.collectCoordinates(layout.varHandle(),
+                 1, MethodHandles.insertArguments(layout.scaleHandle(), 0, 0L));
+     }
+ 
      public static MemorySegment truthSegment(MemorySegment srcSeg, CopyHelper<?, ?> helper, int indexShifts, CopyMode mode) {
-         VarHandle indexedHandleNO = helper.elementLayout.withOrder(NATIVE_ORDER).arrayElementVarHandle();
-         VarHandle indexedHandleNNO = helper.elementLayout.withOrder(NON_NATIVE_ORDER).arrayElementVarHandle();
+         VarHandle indexedHandleNO = arrayVarHandle(helper.elementLayout.withOrder(NATIVE_ORDER));
+         VarHandle indexedHandleNNO = arrayVarHandle(helper.elementLayout.withOrder(NON_NATIVE_ORDER));
          MemorySegment dstSeg = MemorySegment.ofArray(srcSeg.toArray(JAVA_BYTE));
          int indexLength = (int) dstSeg.byteSize() / (int)helper.elementLayout.byteSize();
          if (mode.direction) {
              if (mode.swap) {
                  for (int i = indexLength - 1; i >= indexShifts; i--) {
< prev index next >