< prev index next > test/micro/org/openjdk/bench/java/lang/foreign/JavaLayouts.java
Print this page
*/
package org.openjdk.bench.java.lang.foreign;
import java.lang.foreign.ValueLayout;
+ import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
- import static java.lang.foreign.ValueLayout.*;
+ import static java.lang.foreign.ValueLayout.JAVA_INT;
+ import static java.lang.foreign.ValueLayout.JAVA_INT_UNALIGNED;
+ import static java.lang.foreign.ValueLayout.JAVA_LONG;
+ import static java.lang.foreign.ValueLayout.JAVA_LONG_UNALIGNED;
/**
- * Some useful Java {@link ValueLayout} and associated {@link ValueLayout#arrayElementVarHandle(int...)} var handles.
+ * Some useful Java {@link ValueLayout} and associated array var handles.
*/
public class JavaLayouts {
- static final VarHandle VH_INT_UNALIGNED = JAVA_INT_UNALIGNED.arrayElementVarHandle();
+ static final VarHandle VH_INT_UNALIGNED = arrayVarHandle(JAVA_INT_UNALIGNED);
+ static final VarHandle VH_INT = arrayVarHandle(JAVA_INT);
- static final VarHandle VH_INT = JAVA_INT.arrayElementVarHandle();
+ static final VarHandle VH_LONG_UNALIGNED = arrayVarHandle(JAVA_LONG_UNALIGNED);
+ static final VarHandle VH_LONG = arrayVarHandle(JAVA_LONG);
+
+ private static VarHandle arrayVarHandle(ValueLayout layout) {
+ return MethodHandles.collectCoordinates(layout.varHandle(),
+ 1, MethodHandles.insertArguments(layout.scaleHandle(), 0, 0L));
+ }
}
< prev index next >