< prev index next >

test/micro/org/openjdk/bench/java/lang/foreign/JavaLayouts.java

Print this page
*** 22,18 ***
   */
  
  package org.openjdk.bench.java.lang.foreign;
  
  import java.lang.foreign.ValueLayout;
  import java.lang.invoke.VarHandle;
  
! import static java.lang.foreign.ValueLayout.*;
  
  /**
!  * Some useful Java {@link ValueLayout} and associated {@link ValueLayout#arrayElementVarHandle(int...)} var handles.
   */
  public class JavaLayouts {
  
!     static final VarHandle VH_INT_UNALIGNED = JAVA_INT_UNALIGNED.arrayElementVarHandle();
  
!     static final VarHandle VH_INT = JAVA_INT.arrayElementVarHandle();
  }
--- 22,29 ---
   */
  
  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.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 array var handles.
   */
  public class JavaLayouts {
  
!     static final VarHandle VH_INT_UNALIGNED = arrayVarHandle(JAVA_INT_UNALIGNED);
+     static final VarHandle VH_INT = arrayVarHandle(JAVA_INT);
  
!     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 >