public final class com.oracle.truffle.llvm.runtime.memory.LLVMStack
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.llvm.runtime.memory.LLVMStack
  super_class: java.lang.Object
{
  private static final java.lang.String STACK_ID;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "<stack>"

  private static final java.lang.String BASE_POINTER_ID;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "<base>"

  private static final java.lang.String UNIQUES_REGION_ID;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "<uniques_region>"

  private static final long MAX_ALLOCATION_SIZE;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2147483647

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

  private final com.oracle.truffle.llvm.runtime.LLVMContext context;
    descriptor: Lcom/oracle/truffle/llvm/runtime/LLVMContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long stackSize;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long lowerBounds;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long upperBounds;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long stackPointer;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 60
            ldc Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.llvm.runtime.memory.LLVMStack.$assertionsDisabled:Z
         3: .line 67
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(long, com.oracle.truffle.llvm.runtime.LLVMContext);
    descriptor: (JLcom/oracle/truffle/llvm/runtime/LLVMContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
        start local 1 // long stackSize
        start local 3 // com.oracle.truffle.llvm.runtime.LLVMContext context
         0: .line 77
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 78
            aload 0 /* this */
            aload 3 /* context */
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.context:Lcom/oracle/truffle/llvm/runtime/LLVMContext;
         2: .line 79
            aload 0 /* this */
            lload 1 /* stackSize */
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.stackSize:J
         3: .line 81
            aload 0 /* this */
            lconst_0
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.lowerBounds:J
         4: .line 82
            aload 0 /* this */
            lconst_0
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.upperBounds:J
         5: .line 83
            aload 0 /* this */
            lconst_0
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.stackPointer:J
         6: .line 84
            return
        end local 3 // com.oracle.truffle.llvm.runtime.LLVMContext context
        end local 1 // long stackSize
        end local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
            0    7     1  stackSize  J
            0    7     3    context  Lcom/oracle/truffle/llvm/runtime/LLVMContext;
    MethodParameters:
           Name  Flags
      stackSize  
      context    

  public com.oracle.truffle.llvm.runtime.LLVMContext getContext();
    descriptor: ()Lcom/oracle/truffle/llvm/runtime/LLVMContext;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
         0: .line 87
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.context:Lcom/oracle/truffle/llvm/runtime/LLVMContext;
            areturn
        end local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;

  private boolean isAllocated();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
         0: .line 91
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.stackPointer:J
            lconst_0
            lcmp
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;

  public static com.oracle.truffle.api.frame.FrameSlot getStackSlot(com.oracle.truffle.api.frame.FrameDescriptor);
    descriptor: (Lcom/oracle/truffle/api/frame/FrameDescriptor;)Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
         0: .line 95
            aload 0 /* frameDescriptor */
            ldc "<stack>"
            getstatic com.oracle.truffle.llvm.runtime.types.PointerType.VOID:Lcom/oracle/truffle/llvm/runtime/types/PointerType;
            getstatic com.oracle.truffle.api.frame.FrameSlotKind.Object:Lcom/oracle/truffle/api/frame/FrameSlotKind;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.findOrAddFrameSlot:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/frame/FrameSlotKind;)Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
        end local 0 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0  frameDescriptor  Lcom/oracle/truffle/api/frame/FrameDescriptor;
    MethodParameters:
                 Name  Flags
      frameDescriptor  

  private static com.oracle.truffle.api.frame.FrameSlot getBasePointerSlot(com.oracle.truffle.api.frame.FrameDescriptor, boolean);
    descriptor: (Lcom/oracle/truffle/api/frame/FrameDescriptor;Z)Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
        start local 1 // boolean create
         0: .line 99
            iload 1 /* create */
            ifeq 2
         1: .line 100
            aload 0 /* frameDescriptor */
            ldc "<base>"
            getstatic com.oracle.truffle.llvm.runtime.types.PointerType.VOID:Lcom/oracle/truffle/llvm/runtime/types/PointerType;
            getstatic com.oracle.truffle.api.frame.FrameSlotKind.Long:Lcom/oracle/truffle/api/frame/FrameSlotKind;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.findOrAddFrameSlot:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/frame/FrameSlotKind;)Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
         2: .line 102
      StackMap locals:
      StackMap stack:
            aload 0 /* frameDescriptor */
            ldc "<base>"
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.findFrameSlot:(Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
        end local 1 // boolean create
        end local 0 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0  frameDescriptor  Lcom/oracle/truffle/api/frame/FrameDescriptor;
            0    3     1           create  Z
    MethodParameters:
                 Name  Flags
      frameDescriptor  
      create           

  public static com.oracle.truffle.api.frame.FrameSlot getUniquesRegionSlot(com.oracle.truffle.api.frame.FrameDescriptor);
    descriptor: (Lcom/oracle/truffle/api/frame/FrameDescriptor;)Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
         0: .line 107
            aload 0 /* frameDescriptor */
            ldc "<uniques_region>"
            getstatic com.oracle.truffle.llvm.runtime.types.PointerType.VOID:Lcom/oracle/truffle/llvm/runtime/types/PointerType;
            getstatic com.oracle.truffle.api.frame.FrameSlotKind.Object:Lcom/oracle/truffle/api/frame/FrameSlotKind;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.findOrAddFrameSlot:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/frame/FrameSlotKind;)Lcom/oracle/truffle/api/frame/FrameSlot;
            areturn
        end local 0 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0  frameDescriptor  Lcom/oracle/truffle/api/frame/FrameDescriptor;
    MethodParameters:
                 Name  Flags
      frameDescriptor  

  private void allocate(com.oracle.truffle.api.nodes.Node, com.oracle.truffle.llvm.runtime.memory.LLVMMemory);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/llvm/runtime/memory/LLVMMemory;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
        start local 1 // com.oracle.truffle.api.nodes.Node location
        start local 2 // com.oracle.truffle.llvm.runtime.memory.LLVMMemory memory
         0: .line 150
            aload 2 /* memory */
            aload 1 /* location */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.stackSize:J
            invokevirtual com.oracle.truffle.llvm.runtime.memory.LLVMMemory.allocateMemory:(Lcom/oracle/truffle/api/nodes/Node;J)Lcom/oracle/truffle/llvm/runtime/pointer/LLVMNativePointer;
            invokeinterface com.oracle.truffle.llvm.runtime.pointer.LLVMNativePointer.asNative:()J
            lstore 3 /* stackAllocation */
        start local 3 // long stackAllocation
         1: .line 151
            aload 0 /* this */
            lload 3 /* stackAllocation */
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.lowerBounds:J
         2: .line 152
            aload 0 /* this */
            lload 3 /* stackAllocation */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.stackSize:J
            ladd
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.upperBounds:J
         3: .line 153
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.upperBounds:J
            ldc -8
            land
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.stackPointer:J
         4: .line 155
            getstatic com.oracle.truffle.llvm.runtime.memory.LLVMStack.$assertionsDisabled:Z
            ifne 5
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.stackPointer:J
            lconst_0
            lcmp
            ifne 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 156
      StackMap locals: long
      StackMap stack:
            return
        end local 3 // long stackAllocation
        end local 2 // com.oracle.truffle.llvm.runtime.memory.LLVMMemory memory
        end local 1 // com.oracle.truffle.api.nodes.Node location
        end local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
            0    6     1         location  Lcom/oracle/truffle/api/nodes/Node;
            0    6     2           memory  Lcom/oracle/truffle/llvm/runtime/memory/LLVMMemory;
            1    6     3  stackAllocation  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      location  
      memory    

  public void free(com.oracle.truffle.llvm.runtime.memory.LLVMMemory);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/memory/LLVMMemory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
        start local 1 // com.oracle.truffle.llvm.runtime.memory.LLVMMemory memory
         0: .line 160
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.memory.LLVMStack.isAllocated:()Z
            ifeq 5
         1: .line 161
            aload 1 /* memory */
            aconst_null
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.lowerBounds:J
            invokevirtual com.oracle.truffle.llvm.runtime.memory.LLVMMemory.free:(Lcom/oracle/truffle/api/nodes/Node;J)V
         2: .line 162
            aload 0 /* this */
            lconst_0
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.lowerBounds:J
         3: .line 163
            aload 0 /* this */
            lconst_0
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.upperBounds:J
         4: .line 164
            aload 0 /* this */
            lconst_0
            putfield com.oracle.truffle.llvm.runtime.memory.LLVMStack.stackPointer:J
         5: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.llvm.runtime.memory.LLVMMemory memory
        end local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMStack this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
            0    6     1  memory  Lcom/oracle/truffle/llvm/runtime/memory/LLVMMemory;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
        Name  Flags
      memory  
}
SourceFile: "LLVMStack.java"
NestMembers:
  com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMAllocaConstInstruction  com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMAllocaInstruction  com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMGetStackSpaceInstruction  com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMGetUniqueStackSpaceInstruction  com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMNativeStackAccess  com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMStackAccess  com.oracle.truffle.llvm.runtime.memory.LLVMStack$UniquesRegion
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract LLVMAllocaConstInstruction = com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMAllocaConstInstruction of com.oracle.truffle.llvm.runtime.memory.LLVMStack
  public abstract LLVMAllocaInstruction = com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMAllocaInstruction of com.oracle.truffle.llvm.runtime.memory.LLVMStack
  public abstract LLVMGetStackSpaceInstruction = com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMGetStackSpaceInstruction of com.oracle.truffle.llvm.runtime.memory.LLVMStack
  public abstract LLVMGetUniqueStackSpaceInstruction = com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMGetUniqueStackSpaceInstruction of com.oracle.truffle.llvm.runtime.memory.LLVMStack
  public final LLVMNativeStackAccess = com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMNativeStackAccess of com.oracle.truffle.llvm.runtime.memory.LLVMStack
  public abstract LLVMStackAccess = com.oracle.truffle.llvm.runtime.memory.LLVMStack$LLVMStackAccess of com.oracle.truffle.llvm.runtime.memory.LLVMStack
  public final UniquesRegion = com.oracle.truffle.llvm.runtime.memory.LLVMStack$UniquesRegion of com.oracle.truffle.llvm.runtime.memory.LLVMStack