< prev index next >

src/java.base/share/classes/jdk/internal/access/JavaLangInvokeAccess.java

Print this page

        

@@ -24,10 +24,12 @@
  */
 
 package jdk.internal.access;
 
 import java.lang.invoke.MethodType;
+import java.lang.invoke.VarHandle;
+import java.nio.ByteOrder;
 import java.util.Map;
 
 public interface JavaLangInvokeAccess {
     /**
      * Create a new MemberName instance. Used by {@code StackFrameInfo}.

@@ -104,6 +106,43 @@
      */
     byte[] generateInvokersHolderClassBytes(String className,
             MethodType[] invokerMethodTypes,
             MethodType[] callSiteMethodTypes);
 
+    /**
+     * Returns a var handle view of a given memory address.
+     * Used by {@code jdk.internal.foreign.LayoutPath} and
+     * {@code jdk.incubator.foreign.MemoryHandles}.
+     */
+    VarHandle memoryAddressViewVarHandle(Class<?> carrier, long alignmentMask,
+                                         ByteOrder order, long offset, long[] strides);
+
+    /**
+     * Returns the carrier associated with a memory access var handle.
+     * Used by {@code jdk.incubator.foreign.MemoryHandles}.
+     */
+    Class<?> memoryAddressCarrier(VarHandle handle);
+
+    /**
+     * Returns the alignment mask associated with a memory access var handle.
+     * Used by {@code jdk.incubator.foreign.MemoryHandles}.
+     */
+    long memoryAddressAlignmentMask(VarHandle handle);
+
+    /**
+     * Returns the byte order associated with a memory access var handle.
+     * Used by {@code jdk.incubator.foreign.MemoryHandles}.
+     */
+    ByteOrder memoryAddressByteOrder(VarHandle handle);
+
+    /**
+     * Returns the offset associated with a memory access var handle.
+     * Used by {@code jdk.incubator.foreign.MemoryHandles}.
+     */
+    long memoryAddressOffset(VarHandle handle);
+
+    /**
+     * Returns the strides associated with a memory access var handle.
+     * Used by {@code jdk.incubator.foreign.MemoryHandles}.
+     */
+    long[] memoryAddressStrides(VarHandle handle);
 }
< prev index next >