public abstract class com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode extends com.oracle.truffle.llvm.runtime.nodes.api.LLVMNode
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode
  super_class: com.oracle.truffle.llvm.runtime.nodes.api.LLVMNode
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode this
         0: .line 41
            aload 0 /* this */
            invokespecial com.oracle.truffle.llvm.runtime.nodes.api.LLVMNode.<init>:()V
            return
        end local 0 // com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/runtime/LLVMGetStackFromThreadNode;

  public static com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode create();
    descriptor: ()Lcom/oracle/truffle/llvm/runtime/LLVMGetStackFromThreadNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 44
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tLLVMGetStackFromThreadNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public abstract com.oracle.truffle.llvm.runtime.memory.LLVMStack executeWithTarget(com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack, java.lang.Thread);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/memory/LLVMThreadingStack;Ljava/lang/Thread;)Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
                Name  Flags
      threadingStack  
      currentThread   

  protected com.oracle.truffle.llvm.runtime.memory.LLVMStack getStack(com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack, java.lang.Thread);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/memory/LLVMThreadingStack;Ljava/lang/Thread;)Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode this
        start local 1 // com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack threadingStack
        start local 2 // java.lang.Thread cachedThread
         0: .line 50
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 2 /* cachedThread */
            if_acmpne 2
         1: .line 51
            aload 1 /* threadingStack */
            invokevirtual com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack.getStack:()Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
            areturn
         2: .line 53
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
         3: .line 54
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
        end local 2 // java.lang.Thread cachedThread
        end local 1 // com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack threadingStack
        end local 0 // com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/oracle/truffle/llvm/runtime/LLVMGetStackFromThreadNode;
            0    4     1  threadingStack  Lcom/oracle/truffle/llvm/runtime/memory/LLVMThreadingStack;
            0    4     2    cachedThread  Ljava/lang/Thread;
    MethodParameters:
                Name  Flags
      threadingStack  
      cachedThread    

  protected com.oracle.truffle.llvm.runtime.memory.LLVMStack cached(com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack, java.lang.Thread, java.lang.Thread, com.oracle.truffle.llvm.runtime.memory.LLVMStack);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/memory/LLVMThreadingStack;Ljava/lang/Thread;Ljava/lang/Thread;Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;)Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=5, args_size=5
        start local 0 // com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode this
        start local 1 // com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack stack
        start local 2 // java.lang.Thread currentThread
        start local 3 // java.lang.Thread cachedThread
        start local 4 // com.oracle.truffle.llvm.runtime.memory.LLVMStack cachedStack
         0: .line 66
            aload 4 /* cachedStack */
            areturn
        end local 4 // com.oracle.truffle.llvm.runtime.memory.LLVMStack cachedStack
        end local 3 // java.lang.Thread cachedThread
        end local 2 // java.lang.Thread currentThread
        end local 1 // com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack stack
        end local 0 // com.oracle.truffle.llvm.runtime.LLVMGetStackFromThreadNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/oracle/truffle/llvm/runtime/LLVMGetStackFromThreadNode;
            0    1     1          stack  Lcom/oracle/truffle/llvm/runtime/memory/LLVMThreadingStack;
            0    1     2  currentThread  Ljava/lang/Thread;
            0    1     3   cachedThread  Ljava/lang/Thread;
            0    1     4    cachedStack  Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(limit = "3", guards = {"currentThread == cachedThread"}, assumptions = {"singleContextAssumption()"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
        com.oracle.truffle.api.dsl.Cached(value = "currentThread")
      3:
        com.oracle.truffle.api.dsl.Cached(value = "getStack(stack, cachedThread)")
    MethodParameters:
               Name  Flags
      stack          
      currentThread  
      cachedThread   
      cachedStack    

  static com.oracle.truffle.llvm.runtime.memory.LLVMStack generic(com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack, java.lang.Thread);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/memory/LLVMThreadingStack;Ljava/lang/Thread;)Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack stack
        start local 1 // java.lang.Thread currentThread
         0: .line 75
            aload 0 /* stack */
            invokevirtual com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack.getStack:()Lcom/oracle/truffle/llvm/runtime/memory/LLVMStack;
            areturn
        end local 1 // java.lang.Thread currentThread
        end local 0 // com.oracle.truffle.llvm.runtime.memory.LLVMThreadingStack stack
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0          stack  Lcom/oracle/truffle/llvm/runtime/memory/LLVMThreadingStack;
            0    1     1  currentThread  Ljava/lang/Thread;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(replaces = {"cached"})
    MethodParameters:
               Name  Flags
      stack          
      currentThread  
}
SourceFile: "LLVMGetStackFromThreadNode.java"
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.dsl.GenerateUncached()