public class jdk.internal.foreign.abi.x64.windows.Windowsx64Linker implements jdk.incubator.foreign.CLinker
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.foreign.abi.x64.windows.Windowsx64Linker
  super_class: java.lang.Object
{
  public static final int MAX_INTEGER_ARGUMENT_REGISTERS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final int MAX_INTEGER_RETURN_REGISTERS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int MAX_VECTOR_ARGUMENT_REGISTERS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final int MAX_VECTOR_RETURN_REGISTERS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int MAX_REGISTER_ARGUMENTS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final int MAX_REGISTER_RETURNS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static jdk.internal.foreign.abi.x64.windows.Windowsx64Linker instance;
    descriptor: Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static final long ADDRESS_SIZE;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 64

  private static final java.lang.invoke.MethodHandle MH_unboxVaList;
    descriptor: Ljava/lang/invoke/MethodHandle;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.invoke.MethodHandle MH_boxVaList;
    descriptor: Ljava/lang/invoke/MethodHandle;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=1, args_size=0
         0: .line 65
            invokestatic java.lang.invoke.MethodHandles.lookup:()Ljava/lang/invoke/MethodHandles$Lookup;
            astore 0 /* lookup */
        start local 0 // java.lang.invoke.MethodHandles$Lookup lookup
         1: .line 66
            aload 0 /* lookup */
            ldc Ljdk/incubator/foreign/CLinker$VaList;
            ldc "address"
         2: .line 67
            ldc Ljdk/incubator/foreign/MemoryAddress;
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
         3: .line 66
            invokevirtual java.lang.invoke.MethodHandles$Lookup.findVirtual:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            putstatic jdk.internal.foreign.abi.x64.windows.Windowsx64Linker.MH_unboxVaList:Ljava/lang/invoke/MethodHandle;
         4: .line 68
            aload 0 /* lookup */
            ldc Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;
            ldc "newVaListOfAddress"
         5: .line 69
            ldc Ljdk/incubator/foreign/CLinker$VaList;
            ldc Ljdk/incubator/foreign/MemoryAddress;
            invokestatic java.lang.invoke.MethodType.methodType:(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
         6: .line 68
            invokevirtual java.lang.invoke.MethodHandles$Lookup.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
            putstatic jdk.internal.foreign.abi.x64.windows.Windowsx64Linker.MH_boxVaList:Ljava/lang/invoke/MethodHandle;
        end local 0 // java.lang.invoke.MethodHandles$Lookup lookup
         7: .line 70
            goto 10
      StackMap locals:
      StackMap stack: java.lang.ReflectiveOperationException
         8: astore 0 /* e */
        start local 0 // java.lang.ReflectiveOperationException e
         9: .line 71
            new java.lang.ExceptionInInitializerError
            dup
            aload 0 /* e */
            invokespecial java.lang.ExceptionInInitializerError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 0 // java.lang.ReflectiveOperationException e
        10: .line 73
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    7     0  lookup  Ljava/lang/invoke/MethodHandles$Lookup;
            9   10     0       e  Ljava/lang/ReflectiveOperationException;
      Exception table:
        from    to  target  type
           0     7       8  Class java.lang.ReflectiveOperationException

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.internal.foreign.abi.x64.windows.Windowsx64Linker this
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.internal.foreign.abi.x64.windows.Windowsx64Linker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;

  public static jdk.internal.foreign.abi.x64.windows.Windowsx64Linker getInstance();
    descriptor: ()Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 76
            getstatic jdk.internal.foreign.abi.x64.windows.Windowsx64Linker.instance:Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;
            ifnonnull 2
         1: .line 77
            new jdk.internal.foreign.abi.x64.windows.Windowsx64Linker
            dup
            invokespecial jdk.internal.foreign.abi.x64.windows.Windowsx64Linker.<init>:()V
            putstatic jdk.internal.foreign.abi.x64.windows.Windowsx64Linker.instance:Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;
         2: .line 79
      StackMap locals:
      StackMap stack:
            getstatic jdk.internal.foreign.abi.x64.windows.Windowsx64Linker.instance:Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static jdk.incubator.foreign.CLinker$VaList newVaList(java.util.function.Consumer<jdk.incubator.foreign.CLinker$VaList$Builder>, jdk.internal.foreign.abi.SharedUtils$Allocator);
    descriptor: (Ljava/util/function/Consumer;Ljdk/internal/foreign/abi/SharedUtils$Allocator;)Ljdk/incubator/foreign/CLinker$VaList;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.util.function.Consumer actions
        start local 1 // jdk.internal.foreign.abi.SharedUtils$Allocator allocator
         0: .line 83
            aload 1 /* allocator */
            invokestatic jdk.internal.foreign.abi.x64.windows.WinVaList.builder:(Ljdk/internal/foreign/abi/SharedUtils$Allocator;)Ljdk/internal/foreign/abi/x64/windows/WinVaList$Builder;
            astore 2 /* builder */
        start local 2 // jdk.internal.foreign.abi.x64.windows.WinVaList$Builder builder
         1: .line 84
            aload 0 /* actions */
            aload 2 /* builder */
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
         2: .line 85
            aload 2 /* builder */
            invokevirtual jdk.internal.foreign.abi.x64.windows.WinVaList$Builder.build:()Ljdk/incubator/foreign/CLinker$VaList;
            areturn
        end local 2 // jdk.internal.foreign.abi.x64.windows.WinVaList$Builder builder
        end local 1 // jdk.internal.foreign.abi.SharedUtils$Allocator allocator
        end local 0 // java.util.function.Consumer actions
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0    actions  Ljava/util/function/Consumer<Ljdk/incubator/foreign/CLinker$VaList$Builder;>;
            0    3     1  allocator  Ljdk/internal/foreign/abi/SharedUtils$Allocator;
            1    3     2    builder  Ljdk/internal/foreign/abi/x64/windows/WinVaList$Builder;
    Signature: (Ljava/util/function/Consumer<Ljdk/incubator/foreign/CLinker$VaList$Builder;>;Ljdk/internal/foreign/abi/SharedUtils$Allocator;)Ljdk/incubator/foreign/CLinker$VaList;
    MethodParameters:
           Name  Flags
      actions    
      allocator  

  public java.lang.invoke.MethodHandle downcallHandle(jdk.incubator.foreign.Addressable, java.lang.invoke.MethodType, jdk.incubator.foreign.FunctionDescriptor);
    descriptor: (Ljdk/incubator/foreign/Addressable;Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;)Ljava/lang/invoke/MethodHandle;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // jdk.internal.foreign.abi.x64.windows.Windowsx64Linker this
        start local 1 // jdk.incubator.foreign.Addressable symbol
        start local 2 // java.lang.invoke.MethodType type
        start local 3 // jdk.incubator.foreign.FunctionDescriptor function
         0: .line 90
            aload 1 /* symbol */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 91
            aload 2 /* type */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 92
            aload 3 /* function */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 93
            aload 2 /* type */
            getstatic jdk.internal.foreign.abi.x64.windows.WinVaList.CARRIER:Ljava/lang/Class;
            invokestatic jdk.internal.foreign.abi.SharedUtils.convertVaListCarriers:(Ljava/lang/invoke/MethodType;Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
            astore 4 /* llMt */
        start local 4 // java.lang.invoke.MethodType llMt
         4: .line 94
            aload 1 /* symbol */
            aload 4 /* llMt */
            aload 3 /* function */
            invokestatic jdk.internal.foreign.abi.x64.windows.CallArranger.arrangeDowncall:(Ljdk/incubator/foreign/Addressable;Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;)Ljava/lang/invoke/MethodHandle;
            astore 5 /* handle */
        start local 5 // java.lang.invoke.MethodHandle handle
         5: .line 95
            aload 2 /* type */
            aload 5 /* handle */
            getstatic jdk.internal.foreign.abi.x64.windows.Windowsx64Linker.MH_unboxVaList:Ljava/lang/invoke/MethodHandle;
            invokestatic jdk.internal.foreign.abi.SharedUtils.unboxVaLists:(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 5 /* handle */
         6: .line 96
            aload 5 /* handle */
            areturn
        end local 5 // java.lang.invoke.MethodHandle handle
        end local 4 // java.lang.invoke.MethodType llMt
        end local 3 // jdk.incubator.foreign.FunctionDescriptor function
        end local 2 // java.lang.invoke.MethodType type
        end local 1 // jdk.incubator.foreign.Addressable symbol
        end local 0 // jdk.internal.foreign.abi.x64.windows.Windowsx64Linker this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;
            0    7     1    symbol  Ljdk/incubator/foreign/Addressable;
            0    7     2      type  Ljava/lang/invoke/MethodType;
            0    7     3  function  Ljdk/incubator/foreign/FunctionDescriptor;
            4    7     4      llMt  Ljava/lang/invoke/MethodType;
            5    7     5    handle  Ljava/lang/invoke/MethodHandle;
    MethodParameters:
          Name  Flags
      symbol    
      type      
      function  

  public jdk.incubator.foreign.MemorySegment upcallStub(java.lang.invoke.MethodHandle, jdk.incubator.foreign.FunctionDescriptor);
    descriptor: (Ljava/lang/invoke/MethodHandle;Ljdk/incubator/foreign/FunctionDescriptor;)Ljdk/incubator/foreign/MemorySegment;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.internal.foreign.abi.x64.windows.Windowsx64Linker this
        start local 1 // java.lang.invoke.MethodHandle target
        start local 2 // jdk.incubator.foreign.FunctionDescriptor function
         0: .line 101
            aload 1 /* target */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 102
            aload 2 /* function */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 103
            aload 1 /* target */
            getstatic jdk.internal.foreign.abi.x64.windows.Windowsx64Linker.MH_boxVaList:Ljava/lang/invoke/MethodHandle;
            invokestatic jdk.internal.foreign.abi.SharedUtils.boxVaLists:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandle;
            astore 1 /* target */
         3: .line 104
            aload 1 /* target */
            aload 1 /* target */
            invokevirtual java.lang.invoke.MethodHandle.type:()Ljava/lang/invoke/MethodType;
            aload 2 /* function */
            invokestatic jdk.internal.foreign.abi.x64.windows.CallArranger.arrangeUpcall:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;Ljdk/incubator/foreign/FunctionDescriptor;)Ljdk/internal/foreign/abi/UpcallHandler;
            invokestatic jdk.internal.foreign.abi.UpcallStubs.upcallAddress:(Ljdk/internal/foreign/abi/UpcallHandler;)Ljdk/incubator/foreign/MemorySegment;
            areturn
        end local 2 // jdk.incubator.foreign.FunctionDescriptor function
        end local 1 // java.lang.invoke.MethodHandle target
        end local 0 // jdk.internal.foreign.abi.x64.windows.Windowsx64Linker this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Ljdk/internal/foreign/abi/x64/windows/Windowsx64Linker;
            0    4     1    target  Ljava/lang/invoke/MethodHandle;
            0    4     2  function  Ljdk/incubator/foreign/FunctionDescriptor;
    MethodParameters:
          Name  Flags
      target    
      function  

  public static jdk.incubator.foreign.CLinker$VaList newVaListOfAddress(jdk.incubator.foreign.MemoryAddress);
    descriptor: (Ljdk/incubator/foreign/MemoryAddress;)Ljdk/incubator/foreign/CLinker$VaList;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.incubator.foreign.MemoryAddress ma
         0: .line 108
            aload 0 /* ma */
            invokestatic jdk.internal.foreign.abi.x64.windows.WinVaList.ofAddress:(Ljdk/incubator/foreign/MemoryAddress;)Ljdk/internal/foreign/abi/x64/windows/WinVaList;
            areturn
        end local 0 // jdk.incubator.foreign.MemoryAddress ma
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    ma  Ljdk/incubator/foreign/MemoryAddress;
    MethodParameters:
      Name  Flags
      ma    

  public static jdk.incubator.foreign.CLinker$VaList emptyVaList();
    descriptor: ()Ljdk/incubator/foreign/CLinker$VaList;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 112
            invokestatic jdk.internal.foreign.abi.x64.windows.WinVaList.empty:()Ljdk/incubator/foreign/CLinker$VaList;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "Windowsx64Linker.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract VaList = jdk.incubator.foreign.CLinker$VaList of jdk.incubator.foreign.CLinker
  public abstract Builder = jdk.incubator.foreign.CLinker$VaList$Builder of jdk.incubator.foreign.CLinker$VaList
  public abstract Allocator = jdk.internal.foreign.abi.SharedUtils$Allocator of jdk.internal.foreign.abi.SharedUtils
  Builder = jdk.internal.foreign.abi.x64.windows.WinVaList$Builder of jdk.internal.foreign.abi.x64.windows.WinVaList