< prev index next >

src/java.base/share/classes/jdk/internal/foreign/abi/aarch64/macos/MacOsAArch64Linker.java

Print this page
@@ -25,23 +25,30 @@
   */
  package jdk.internal.foreign.abi.aarch64.macos;
  
  import jdk.internal.foreign.abi.AbstractLinker;
  import jdk.internal.foreign.abi.LinkerOptions;
+ import jdk.internal.foreign.abi.SharedUtils;
  import jdk.internal.foreign.abi.aarch64.CallArranger;
  
  import java.lang.foreign.FunctionDescriptor;
+ import java.lang.foreign.MemoryLayout;
+ import java.lang.foreign.ValueLayout;
  import java.lang.invoke.MethodHandle;
  import java.lang.invoke.MethodType;
  import java.nio.ByteOrder;
+ import java.util.Map;
  
  /**
   * ABI implementation for macOS on Apple silicon. Based on AAPCS with
   * changes to va_list and passing arguments on the stack.
   */
  public final class MacOsAArch64Linker extends AbstractLinker {
  
+     static final Map<String, MemoryLayout> CANONICAL_LAYOUTS =
+             SharedUtils.canonicalLayouts(ValueLayout.JAVA_LONG, ValueLayout.JAVA_LONG, ValueLayout.JAVA_INT);
+ 
      public static MacOsAArch64Linker getInstance() {
          final class Holder {
              private static final MacOsAArch64Linker INSTANCE = new MacOsAArch64Linker();
          }
  

@@ -64,6 +71,11 @@
  
      @Override
      protected ByteOrder linkerByteOrder() {
          return ByteOrder.LITTLE_ENDIAN;
      }
+ 
+     @Override
+     public Map<String, MemoryLayout> canonicalLayouts() {
+         return CANONICAL_LAYOUTS;
+     }
  }
< prev index next >