< prev index next > test/jdk/java/foreign/TestArrayCopy.java
Print this page
* questions.
*/
/*
* @test
- * @enablePreview
* @run testng TestArrayCopy
*/
import java.lang.foreign.MemorySegment;
import java.lang.foreign.ValueLayout;
import java.lang.invoke.VarHandle;
import java.nio.ByteOrder;
import java.util.ArrayList;
import java.util.List;
import org.testng.annotations.DataProvider;
* questions.
*/
/*
* @test
* @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;
arr[i] = (byte)i;
}
return MemorySegment.ofArray(arr);
}
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();
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--) {
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 = 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 >