public final class com.oracle.truffle.llvm.runtime.ToolchainImpl implements com.oracle.truffle.llvm.api.Toolchain
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.llvm.runtime.ToolchainImpl
  super_class: java.lang.Object
{
  private final com.oracle.truffle.llvm.runtime.ToolchainConfig toolchainConfig;
    descriptor: Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  public void <init>(com.oracle.truffle.llvm.runtime.ToolchainConfig, com.oracle.truffle.llvm.runtime.LLVMLanguage);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;Lcom/oracle/truffle/llvm/runtime/LLVMLanguage;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
        start local 1 // com.oracle.truffle.llvm.runtime.ToolchainConfig toolchainConfig
        start local 2 // com.oracle.truffle.llvm.runtime.LLVMLanguage language
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 46
            aload 0 /* this */
            aload 1 /* toolchainConfig */
            putfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
         2: .line 47
            aload 0 /* this */
            aload 2 /* language */
            putfield com.oracle.truffle.llvm.runtime.ToolchainImpl.language:Lcom/oracle/truffle/llvm/runtime/LLVMLanguage;
         3: .line 48
            return
        end local 2 // com.oracle.truffle.llvm.runtime.LLVMLanguage language
        end local 1 // com.oracle.truffle.llvm.runtime.ToolchainConfig toolchainConfig
        end local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lcom/oracle/truffle/llvm/runtime/ToolchainImpl;
            0    4     1  toolchainConfig  Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            0    4     2         language  Lcom/oracle/truffle/llvm/runtime/LLVMLanguage;
    MethodParameters:
                 Name  Flags
      toolchainConfig  
      language         

  public com.oracle.truffle.api.TruffleFile getToolPath(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
        start local 1 // java.lang.String tool
         0: .line 56
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            ifnonnull 2
         1: .line 57
            aconst_null
            areturn
         2: .line 60
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.ToolchainImpl.getWrappersRoot:()Lcom/oracle/truffle/api/TruffleFile;
            ldc "bin"
            invokevirtual com.oracle.truffle.api.TruffleFile.resolve:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            astore 2 /* binPrefix */
        start local 2 // com.oracle.truffle.api.TruffleFile binPrefix
         3: .line 61
            aload 1 /* tool */
            dup
            astore 3
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 12
          -1884948986: 4
           -941714228: 5
           -941678773: 6
                 2097: 7
                 2144: 8
                 2424: 9
                 2495: 10
                67203: 11
              2448421: 12
             79235832: 13
           1798392617: 14
           1798401921: 15
              default: 23
          }
      StackMap locals: com.oracle.truffle.api.TruffleFile java.lang.String
      StackMap stack:
         4: aload 3
            ldc "RANLIB"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 23
      StackMap locals:
      StackMap stack:
         5: aload 3
            ldc "OBJCOPY"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 23
      StackMap locals:
      StackMap stack:
         6: aload 3
            ldc "OBJDUMP"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 23
      StackMap locals:
      StackMap stack:
         7: aload 3
            ldc "AR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 23
      StackMap locals:
      StackMap stack:
         8: aload 3
            ldc "CC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 17
            goto 23
      StackMap locals:
      StackMap stack:
         9: aload 3
            ldc "LD"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 21
            goto 23
      StackMap locals:
      StackMap stack:
        10: aload 3
            ldc "NM"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 23
      StackMap locals:
      StackMap stack:
        11: aload 3
            ldc "CXX"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            goto 23
      StackMap locals:
      StackMap stack:
        12: aload 3
            ldc "PATH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 16
            goto 23
      StackMap locals:
      StackMap stack:
        13: aload 3
            ldc "STRIP"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 23
      StackMap locals:
      StackMap stack:
        14: aload 3
            ldc "READELF"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 23
      StackMap locals:
      StackMap stack:
        15: aload 3
            ldc "READOBJ"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 22
            goto 23
        16: .line 63
      StackMap locals:
      StackMap stack:
            aload 2 /* binPrefix */
            areturn
        17: .line 65
      StackMap locals:
      StackMap stack:
            aload 2 /* binPrefix */
            new java.lang.StringBuilder
            dup
            ldc "graalvm-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            invokeinterface com.oracle.truffle.llvm.runtime.ToolchainConfig.getToolchainSubdir:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "-clang"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleFile.resolve:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            areturn
        18: .line 67
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            invokeinterface com.oracle.truffle.llvm.runtime.ToolchainConfig.enableCXX:()Z
            ifne 20
        19: .line 68
            aconst_null
            areturn
        20: .line 70
      StackMap locals:
      StackMap stack:
            aload 2 /* binPrefix */
            new java.lang.StringBuilder
            dup
            ldc "graalvm-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            invokeinterface com.oracle.truffle.llvm.runtime.ToolchainConfig.getToolchainSubdir:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "-clang++"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleFile.resolve:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            areturn
        21: .line 72
      StackMap locals:
      StackMap stack:
            aload 2 /* binPrefix */
            new java.lang.StringBuilder
            dup
            ldc "graalvm-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            invokeinterface com.oracle.truffle.llvm.runtime.ToolchainConfig.getToolchainSubdir:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "-ld"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleFile.resolve:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            areturn
        22: .line 81
      StackMap locals:
      StackMap stack:
            aload 2 /* binPrefix */
            aload 1 /* tool */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleFile.resolve:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            areturn
        23: .line 83
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // com.oracle.truffle.api.TruffleFile binPrefix
        end local 1 // java.lang.String tool
        end local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   24     0       this  Lcom/oracle/truffle/llvm/runtime/ToolchainImpl;
            0   24     1       tool  Ljava/lang/String;
            3   24     2  binPrefix  Lcom/oracle/truffle/api/TruffleFile;
    MethodParameters:
      Name  Flags
      tool  

  public java.util.List<com.oracle.truffle.api.TruffleFile> getPaths(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
        start local 1 // java.lang.String pathName
         0: .line 89
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            ifnonnull 2
         1: .line 90
            aconst_null
            areturn
         2: .line 93
      StackMap locals:
      StackMap stack:
            aload 1 /* pathName */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
              2448421: 3
           1420169392: 4
              default: 7
          }
      StackMap locals: java.lang.String
      StackMap stack:
         3: aload 2
            ldc "PATH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
            goto 7
      StackMap locals:
      StackMap stack:
         4: aload 2
            ldc "LD_LIBRARY_PATH"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 7
         5: .line 95
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray com.oracle.truffle.api.TruffleFile
            dup
            iconst_0
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.ToolchainImpl.getWrappersRoot:()Lcom/oracle/truffle/api/TruffleFile;
            ldc "bin"
            invokevirtual com.oracle.truffle.api.TruffleFile.resolve:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
            areturn
         6: .line 97
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray com.oracle.truffle.api.TruffleFile
            dup
            iconst_0
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.ToolchainImpl.getSysroot:()Lcom/oracle/truffle/api/TruffleFile;
            ldc "lib"
            invokevirtual com.oracle.truffle.api.TruffleFile.resolve:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
            areturn
         7: .line 99
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String pathName
        end local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lcom/oracle/truffle/llvm/runtime/ToolchainImpl;
            0    8     1  pathName  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/List<Lcom/oracle/truffle/api/TruffleFile;>;
    MethodParameters:
          Name  Flags
      pathName  

  private com.oracle.truffle.api.TruffleFile getWrappersRoot();
    descriptor: ()Lcom/oracle/truffle/api/TruffleFile;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
         0: .line 110
            invokestatic com.oracle.truffle.llvm.runtime.LLVMLanguage.getContext:()Lcom/oracle/truffle/llvm/runtime/LLVMContext;
            invokevirtual com.oracle.truffle.llvm.runtime.LLVMContext.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            astore 1 /* env */
        start local 1 // com.oracle.truffle.api.TruffleLanguage$Env env
         1: .line 111
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            invokeinterface com.oracle.truffle.llvm.runtime.ToolchainConfig.getToolchainRootOverride:()Ljava/lang/String;
            astore 2 /* toolchainRoot */
        start local 2 // java.lang.String toolchainRoot
         2: .line 112
            aload 2 /* toolchainRoot */
            ifnull 4
         3: .line 113
            aload 1 /* env */
            aload 2 /* toolchainRoot */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getInternalTruffleFile:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            goto 5
         4: .line 114
      StackMap locals: com.oracle.truffle.api.TruffleLanguage$Env java.lang.String
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.runtime.ToolchainImpl.getSysroot:()Lcom/oracle/truffle/api/TruffleFile;
         5: .line 112
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.TruffleFile
            areturn
        end local 2 // java.lang.String toolchainRoot
        end local 1 // com.oracle.truffle.api.TruffleLanguage$Env env
        end local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lcom/oracle/truffle/llvm/runtime/ToolchainImpl;
            1    6     1            env  Lcom/oracle/truffle/api/TruffleLanguage$Env;
            2    6     2  toolchainRoot  Ljava/lang/String;

  private com.oracle.truffle.api.TruffleFile getSysroot();
    descriptor: ()Lcom/oracle/truffle/api/TruffleFile;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
         0: .line 122
            invokestatic com.oracle.truffle.llvm.runtime.LLVMLanguage.getContext:()Lcom/oracle/truffle/llvm/runtime/LLVMContext;
            invokevirtual com.oracle.truffle.llvm.runtime.LLVMContext.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            astore 1 /* env */
        start local 1 // com.oracle.truffle.api.TruffleLanguage$Env env
         1: .line 123
            aload 1 /* env */
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.language:Lcom/oracle/truffle/llvm/runtime/LLVMLanguage;
            invokevirtual com.oracle.truffle.llvm.runtime.LLVMLanguage.getLLVMLanguageHome:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getInternalTruffleFile:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            invokeinterface com.oracle.truffle.llvm.runtime.ToolchainConfig.getToolchainSubdir:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleFile.resolve:(Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
            areturn
        end local 1 // com.oracle.truffle.api.TruffleLanguage$Env env
        end local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/llvm/runtime/ToolchainImpl;
            1    2     1   env  Lcom/oracle/truffle/api/TruffleLanguage$Env;

  public java.lang.String getIdentifier();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
         0: .line 128
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            ifnonnull 2
         1: .line 129
            aconst_null
            areturn
         2: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            invokeinterface com.oracle.truffle.llvm.runtime.ToolchainConfig.getToolchainSubdir:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/llvm/runtime/ToolchainImpl;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
         0: .line 136
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.runtime.ToolchainImpl.toolchainConfig:Lcom/oracle/truffle/llvm/runtime/ToolchainConfig;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.llvm.runtime.ToolchainImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/runtime/ToolchainImpl;
}
SourceFile: "ToolchainImpl.java"
InnerClasses:
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage