public final class com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator extends com.oracle.truffle.llvm.runtime.LibraryLocator
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator
super_class: com.oracle.truffle.llvm.runtime.LibraryLocator
{
private final java.util.List<java.lang.String> localPaths;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Ljava/lang/String;>;
private static final java.util.regex.Pattern RPATH_PATTERN;
descriptor: Ljava/util/regex/Pattern;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc "\\$(ORIGIN|\\{ORIGIN\\})"
invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
putstatic com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator.RPATH_PATTERN:Ljava/util/regex/Pattern;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(com.oracle.truffle.llvm.parser.elf.ElfFile, com.oracle.truffle.api.source.Source);
descriptor: (Lcom/oracle/truffle/llvm/parser/elf/ElfFile;Lcom/oracle/truffle/api/source/Source;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial com.oracle.truffle.llvm.runtime.LibraryLocator.<init>:()V
1: aconst_null
astore 3
start local 3 2: aload 1
invokevirtual com.oracle.truffle.llvm.parser.elf.ElfFile.getDynamicSection:()Lcom/oracle/truffle/llvm/parser/elf/ElfDynamicSection;
astore 4
start local 4 3: aload 4
ifnull 7
4: aload 4
invokevirtual com.oracle.truffle.llvm.parser.elf.ElfDynamicSection.getDTRunPathStream:()Ljava/util/stream/Stream;
new com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator$Replacer
dup
aload 2
invokespecial com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator$Replacer.<init>:(Lcom/oracle/truffle/api/source/Source;)V
dup
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
pop
invokedynamic apply(Lcom/oracle/truffle/llvm/parser/elf/ElfLibraryLocator$Replacer;)Ljava/util/function/Function;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)Ljava/lang/Object;
com/oracle/truffle/llvm/parser/elf/ElfLibraryLocator$Replacer.replace(Ljava/lang/String;)Ljava/lang/String; (5)
(Ljava/lang/String;)Ljava/lang/String;
invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
checkcast java.util.List
astore 3
5: aload 3
invokeinterface java.util.List.isEmpty:()Z
ifeq 7
6: aload 4
invokevirtual com.oracle.truffle.llvm.parser.elf.ElfDynamicSection.getDTRPath:()Ljava/util/List;
astore 3
7: StackMap locals: com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator com.oracle.truffle.llvm.parser.elf.ElfFile com.oracle.truffle.api.source.Source java.util.List com.oracle.truffle.llvm.parser.elf.ElfDynamicSection
StackMap stack:
aload 0
aload 3
putfield com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator.localPaths:Ljava/util/List;
8: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/llvm/parser/elf/ElfLibraryLocator;
0 9 1 elfFile Lcom/oracle/truffle/llvm/parser/elf/ElfFile;
0 9 2 source Lcom/oracle/truffle/api/source/Source;
2 9 3 elfPaths Ljava/util/List<Ljava/lang/String;>;
3 9 4 dynamicSection Lcom/oracle/truffle/llvm/parser/elf/ElfDynamicSection;
MethodParameters:
Name Flags
elfFile
source
public com.oracle.truffle.api.TruffleFile locateLibrary(com.oracle.truffle.llvm.runtime.LLVMContext, java.lang.String, java.lang.Object);
descriptor: (Lcom/oracle/truffle/llvm/runtime/LLVMContext;Ljava/lang/String;Ljava/lang/Object;)Lcom/oracle/truffle/api/TruffleFile;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
iconst_0
anewarray java.lang.String
invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
astore 4
start local 4 1: aload 4
invokeinterface java.nio.file.Path.isAbsolute:()Z
ifeq 3
2: aload 1
aload 4
invokestatic com.oracle.truffle.llvm.runtime.DefaultLibraryLocator.locateAbsolute:(Lcom/oracle/truffle/llvm/runtime/LLVMContext;Ljava/nio/file/Path;)Lcom/oracle/truffle/api/TruffleFile;
areturn
3: StackMap locals: java.nio.file.Path
StackMap stack:
aload 1
aload 2
invokestatic com.oracle.truffle.llvm.runtime.DefaultLibraryLocator.locateGlobal:(Lcom/oracle/truffle/llvm/runtime/LLVMContext;Ljava/lang/String;)Lcom/oracle/truffle/api/TruffleFile;
astore 5
start local 5 4: aload 5
ifnull 6
5: aload 5
areturn
6: StackMap locals: com.oracle.truffle.api.TruffleFile
StackMap stack:
aload 0
getfield com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator.localPaths:Ljava/util/List;
ifnull 16
7: aload 1
aload 0
getfield com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator.localPaths:Ljava/util/List;
aload 3
invokestatic com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator.traceSearchPath:(Lcom/oracle/truffle/llvm/runtime/LLVMContext;Ljava/util/List;Ljava/lang/Object;)V
8: aload 0
getfield com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator.localPaths:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 15
StackMap locals: com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator com.oracle.truffle.llvm.runtime.LLVMContext java.lang.String java.lang.Object java.nio.file.Path com.oracle.truffle.api.TruffleFile top java.util.Iterator
StackMap stack:
9: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 6
start local 6 10: aload 6
iconst_1
anewarray java.lang.String
dup
iconst_0
aload 2
aastore
invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
astore 8
start local 8 11: aload 1
aload 8
invokestatic com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator.traceTry:(Lcom/oracle/truffle/llvm/runtime/LLVMContext;Ljava/lang/Object;)V
12: aload 1
invokevirtual com.oracle.truffle.llvm.runtime.LLVMContext.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
aload 8
invokeinterface java.nio.file.Path.toUri:()Ljava/net/URI;
invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.getInternalTruffleFile:(Ljava/net/URI;)Lcom/oracle/truffle/api/TruffleFile;
astore 9
start local 9 13: aload 9
iconst_0
anewarray java.nio.file.LinkOption
invokevirtual com.oracle.truffle.api.TruffleFile.exists:([Ljava/nio/file/LinkOption;)Z
ifeq 15
14: aload 9
areturn
end local 9 end local 8 end local 6 15: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 9
16: StackMap locals: com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator com.oracle.truffle.llvm.runtime.LLVMContext java.lang.String java.lang.Object java.nio.file.Path com.oracle.truffle.api.TruffleFile
StackMap stack:
aconst_null
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/oracle/truffle/llvm/parser/elf/ElfLibraryLocator;
0 17 1 context Lcom/oracle/truffle/llvm/runtime/LLVMContext;
0 17 2 lib Ljava/lang/String;
0 17 3 reason Ljava/lang/Object;
1 17 4 libPath Ljava/nio/file/Path;
4 17 5 path Lcom/oracle/truffle/api/TruffleFile;
10 15 6 p Ljava/lang/String;
11 15 8 absPath Ljava/nio/file/Path;
13 15 9 file Lcom/oracle/truffle/api/TruffleFile;
MethodParameters:
Name Flags
context
lib
reason
}
SourceFile: "ElfLibraryLocator.java"
NestMembers:
com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator$Replacer
InnerClasses:
public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
private Replacer = com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator$Replacer of com.oracle.truffle.llvm.parser.elf.ElfLibraryLocator
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles