public abstract class com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase<S extends java.lang.Enum<S> extends com.oracle.truffle.llvm.runtime.LLVMSyscallEntry> extends com.oracle.truffle.llvm.runtime.PlatformCapability<S>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase
  super_class: com.oracle.truffle.llvm.runtime.PlatformCapability
{
  public static final java.lang.String LIBCXXABI_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "libc++abi."

  public static final java.lang.String LIBCXX_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "libc++."

  protected final boolean loadCxxLibraries;
    descriptor: Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  public void <init>(java.lang.Class<S>, );
    descriptor: (Ljava/lang/Class;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase this
        start local 1 // java.lang.Class cls
        start local 2 // boolean loadCxxLibraries
         0: .line 48
            aload 0 /* this */
            aload 1 /* cls */
            invokespecial com.oracle.truffle.llvm.runtime.PlatformCapability.<init>:(Ljava/lang/Class;)V
         1: .line 49
            aload 0 /* this */
            iload 2 /* loadCxxLibraries */
            putfield com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase.loadCxxLibraries:Z
         2: .line 50
            return
        end local 2 // boolean loadCxxLibraries
        end local 1 // java.lang.Class cls
        end local 0 // com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lcom/oracle/truffle/llvm/parser/factories/PlatformCapabilityBase<TS;>;
            0    3     1               cls  Ljava/lang/Class<TS;>;
            0    3     2  loadCxxLibraries  Z
    Signature: (Ljava/lang/Class<TS;>;Z)V
    MethodParameters:
                  Name  Flags
      cls               
      loadCxxLibraries  

  public java.lang.String[] getSulongDefaultLibraries();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase this
         0: .line 54
            aload 0 /* this */
            getfield com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase.loadCxxLibraries:Z
            ifeq 2
         1: .line 55
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase.getLibsulongFilename:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase.getLibsulongxxFilename:()Ljava/lang/String;
            aastore
            areturn
         2: .line 57
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase.getLibsulongFilename:()Ljava/lang/String;
            aastore
            areturn
        end local 0 // com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/llvm/parser/factories/PlatformCapabilityBase<TS;>;

  public abstract java.lang.String getLibsulongxxFilename();
    descriptor: ()Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract java.lang.String getLibsulongFilename();
    descriptor: ()Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public java.util.List<java.lang.String> preprocessDependencies(com.oracle.truffle.llvm.runtime.LLVMContext, com.oracle.truffle.api.TruffleFile, java.util.List<java.lang.String>);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/LLVMContext;Lcom/oracle/truffle/api/TruffleFile;Ljava/util/List;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=10, args_size=4
        start local 0 // com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase this
        start local 1 // com.oracle.truffle.llvm.runtime.LLVMContext ctx
        start local 2 // com.oracle.truffle.api.TruffleFile file
        start local 3 // java.util.List dependencies
         0: .line 67
            aconst_null
            astore 4 /* newDeps */
        start local 4 // java.util.List newDeps
         1: .line 68
            iconst_0
            istore 5 /* libSulongXXAdded */
        start local 5 // boolean libSulongXXAdded
         2: .line 70
            aload 2 /* file */
            ifnull 9
            aload 1 /* ctx */
            aload 2 /* file */
            invokevirtual com.oracle.truffle.llvm.runtime.LLVMContext.isInternalLibraryFile:(Lcom/oracle/truffle/api/TruffleFile;)Z
            ifeq 9
         3: .line 71
            aload 2 /* file */
            invokevirtual com.oracle.truffle.api.TruffleFile.getPath:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            astore 6 /* path */
        start local 6 // java.nio.file.Path path
         4: .line 72
            aload 1 /* ctx */
            invokevirtual com.oracle.truffle.llvm.runtime.LLVMContext.getInternalLibraryPath:()Ljava/nio/file/Path;
            aload 6 /* path */
            invokeinterface java.nio.file.Path.relativize:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 7 /* remainder */
        start local 7 // java.lang.String remainder
         5: .line 73
            aload 7 /* remainder */
            ldc "libc++abi."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 6
            aload 7 /* remainder */
            ldc "libc++."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 9
         6: .line 74
      StackMap locals: com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase com.oracle.truffle.llvm.runtime.LLVMContext com.oracle.truffle.api.TruffleFile java.util.List java.util.List int java.nio.file.Path java.lang.String
      StackMap stack:
            new java.util.ArrayList
            dup
            aload 3 /* dependencies */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 4 /* newDeps */
         7: .line 75
            aload 4 /* newDeps */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase.getLibsulongxxFilename:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 76
            iconst_1
            istore 5 /* libSulongXXAdded */
        end local 7 // java.lang.String remainder
        end local 6 // java.nio.file.Path path
         9: .line 81
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        10: goto 27
        11: .line 82
      StackMap locals: int
      StackMap stack:
            aload 3 /* dependencies */
            iload 6 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* dep */
        start local 7 // java.lang.String dep
        12: .line 83
            aload 7 /* dep */
            ldc "/usr/lib/libc++"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 21
        13: .line 84
            aload 7 /* dep */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
            astore 8 /* namePath */
        start local 8 // java.nio.file.Path namePath
        14: .line 85
            aload 8 /* namePath */
            ifnull 21
        15: .line 86
            aload 8 /* namePath */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 9 /* filename */
        start local 9 // java.lang.String filename
        16: .line 87
            aload 9 /* filename */
            ldc "libc++."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 17
            aload 9 /* filename */
            ldc "libc++abi."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 21
        17: .line 88
      StackMap locals: java.lang.String java.nio.file.Path java.lang.String
      StackMap stack:
            aload 4 /* newDeps */
            ifnonnull 19
        18: .line 89
            new java.util.ArrayList
            dup
            aload 3 /* dependencies */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 4 /* newDeps */
        19: .line 92
      StackMap locals:
      StackMap stack:
            aload 4 /* newDeps */
            iload 6 /* i */
            aload 9 /* filename */
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        20: .line 93
            aload 9 /* filename */
            astore 7 /* dep */
        end local 9 // java.lang.String filename
        end local 8 // java.nio.file.Path namePath
        21: .line 97
      StackMap locals:
      StackMap stack:
            iload 5 /* libSulongXXAdded */
            ifne 26
            aload 7 /* dep */
            ldc "libc++abi."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 22
            aload 7 /* dep */
            ldc "libc++."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 26
        22: .line 99
      StackMap locals:
      StackMap stack:
            aload 4 /* newDeps */
            ifnonnull 24
        23: .line 100
            new java.util.ArrayList
            dup
            aload 3 /* dependencies */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 4 /* newDeps */
        24: .line 102
      StackMap locals:
      StackMap stack:
            aload 4 /* newDeps */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase.getLibsulongxxFilename:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        25: .line 103
            iconst_1
            istore 5 /* libSulongXXAdded */
        end local 7 // java.lang.String dep
        26: .line 81
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 6 /* i */
            aload 3 /* dependencies */
            invokeinterface java.util.List.size:()I
            if_icmplt 11
        end local 6 // int i
        28: .line 106
            aload 4 /* newDeps */
            ifnull 30
        29: .line 107
            aload 4 /* newDeps */
            areturn
        30: .line 109
      StackMap locals:
      StackMap stack:
            aload 3 /* dependencies */
            areturn
        end local 5 // boolean libSulongXXAdded
        end local 4 // java.util.List newDeps
        end local 3 // java.util.List dependencies
        end local 2 // com.oracle.truffle.api.TruffleFile file
        end local 1 // com.oracle.truffle.llvm.runtime.LLVMContext ctx
        end local 0 // com.oracle.truffle.llvm.parser.factories.PlatformCapabilityBase this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   31     0              this  Lcom/oracle/truffle/llvm/parser/factories/PlatformCapabilityBase<TS;>;
            0   31     1               ctx  Lcom/oracle/truffle/llvm/runtime/LLVMContext;
            0   31     2              file  Lcom/oracle/truffle/api/TruffleFile;
            0   31     3      dependencies  Ljava/util/List<Ljava/lang/String;>;
            1   31     4           newDeps  Ljava/util/List<Ljava/lang/String;>;
            2   31     5  libSulongXXAdded  Z
            4    9     6              path  Ljava/nio/file/Path;
            5    9     7         remainder  Ljava/lang/String;
           10   28     6                 i  I
           12   26     7               dep  Ljava/lang/String;
           14   21     8          namePath  Ljava/nio/file/Path;
           16   21     9          filename  Ljava/lang/String;
    Signature: (Lcom/oracle/truffle/llvm/runtime/LLVMContext;Lcom/oracle/truffle/api/TruffleFile;Ljava/util/List<Ljava/lang/String;>;)Ljava/util/List<Ljava/lang/String;>;
    MethodParameters:
              Name  Flags
      ctx           
      file          
      dependencies  
}
Signature: <S:Ljava/lang/Enum<TS;>;:Lcom/oracle/truffle/llvm/runtime/LLVMSyscallEntry;>Lcom/oracle/truffle/llvm/runtime/PlatformCapability<TS;>;
SourceFile: "PlatformCapabilityBase.java"