public final class com.oracle.truffle.api.test.polyglot.MemoryFileSystem implements org.graalvm.polyglot.io.FileSystem
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.oracle.truffle.api.test.polyglot.MemoryFileSystem
super_class: java.lang.Object
{
private static final byte[] EMPTY;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.nio.file.attribute.UserPrincipal USER;
descriptor: Ljava/nio/file/attribute/UserPrincipal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.nio.file.attribute.GroupPrincipal GROUP;
descriptor: Ljava/nio/file/attribute/GroupPrincipal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.util.Map<java.lang.Long, com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo> inodes;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Long;Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;>;
private final java.util.Map<java.lang.Long, byte[]> blocks;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Long;[B>;
private final java.nio.file.Path root;
descriptor: Ljava/nio/file/Path;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.nio.file.Path tmpDir;
descriptor: Ljava/nio/file/Path;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private volatile java.nio.file.Path userDir;
descriptor: Ljava/nio/file/Path;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private long nextInode;
descriptor: J
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: iconst_0
newarray 8
putstatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem.EMPTY:[B
1: new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$1
dup
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$1.<init>:()V
putstatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem.USER:Ljava/nio/file/attribute/UserPrincipal;
2: new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$2
dup
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$2.<init>:()V
putstatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem.GROUP:Ljava/nio/file/attribute/GroupPrincipal;
3: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "/tmp"
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem.<init>:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
Exceptions:
throws java.io.IOException
public void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
lconst_0
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.nextInode:J
2: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
3: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.blocks:Ljava/util/Map;
4: aload 0
invokestatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath.getRootDirectory:()Ljava/nio/file/Path;
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.root:Ljava/nio/file/Path;
5: aload 0
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.root:Ljava/nio/file/Path;
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.userDir:Ljava/nio/file/Path;
6: aload 0
iconst_0
anewarray java.nio.file.attribute.FileAttribute
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.createDirectoryImpl:([Ljava/nio/file/attribute/FileAttribute;)J
pop2
7: aload 0
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.root:Ljava/nio/file/Path;
aload 1
invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.tmpDir:Ljava/nio/file/Path;
8: aload 0
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.tmpDir:Ljava/nio/file/Path;
iconst_0
anewarray java.nio.file.attribute.FileAttribute
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.createDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)V
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 10 1 tmpDirPath Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
tmpDirPath
public java.nio.file.Path parsePath(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/nio/file/Path;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath
dup
aload 1
iconst_0
anewarray java.lang.String
invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath.<init>:(Ljava/nio/file/Path;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 1 1 path Ljava/lang/String;
MethodParameters:
Name Flags
path
public java.nio.file.Path parsePath(java.net.URI);
descriptor: (Ljava/net/URI;)Ljava/nio/file/Path;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath
dup
aload 1
invokestatic java.nio.file.Paths.get:(Ljava/net/URI;)Ljava/nio/file/Path;
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath.<init>:(Ljava/nio/file/Path;)V
1: areturn
2: StackMap locals:
StackMap stack: java.lang.RuntimeException
astore 2
start local 2 3: new java.lang.UnsupportedOperationException
dup
aload 2
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 4 1 uri Ljava/net/URI;
3 4 2 e Ljava/lang/RuntimeException;
Exception table:
from to target type
0 1 2 Class java.lang.IllegalArgumentException
0 1 2 Class java.nio.file.FileSystemNotFoundException
MethodParameters:
Name Flags
uri
public void checkAccess(java.nio.file.Path, java.util.Set<? extends java.nio.file.AccessMode>, java.nio.file.LinkOption[]);
descriptor: (Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/LinkOption;)V
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=3, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
astore 4
start local 4 1: aload 0
aload 4
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.findInode:(Ljava/nio/file/Path;)Ljava/lang/Long;
astore 5
start local 5 2: aload 5
ifnonnull 4
3: new java.nio.file.NoSuchFileException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.NoSuchFileException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: java.nio.file.Path java.lang.Long
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 5
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
astore 6
start local 6 5: aload 2
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 8
goto 9
StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.util.Set java.nio.file.LinkOption[] java.nio.file.Path java.lang.Long com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo top java.util.Iterator
StackMap stack:
6: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.nio.file.AccessMode
astore 7
start local 7 7: aload 6
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.permissions:Ljava/util/Set;
aload 7
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 9
8: new java.nio.file.AccessDeniedException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.AccessDeniedException.<init>:(Ljava/lang/String;)V
athrow
end local 7 9: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
10: return
end local 6 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 11 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 11 1 path Ljava/nio/file/Path;
0 11 2 modes Ljava/util/Set<+Ljava/nio/file/AccessMode;>;
0 11 3 linkOptions [Ljava/nio/file/LinkOption;
1 11 4 absolutePath Ljava/nio/file/Path;
2 11 5 inode Ljava/lang/Long;
5 11 6 info Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
7 9 7 mode Ljava/nio/file/AccessMode;
Exceptions:
throws java.io.IOException
Signature: (Ljava/nio/file/Path;Ljava/util/Set<+Ljava/nio/file/AccessMode;>;[Ljava/nio/file/LinkOption;)V
MethodParameters:
Name Flags
path
modes
linkOptions
public void delete(java.nio.file.Path);
descriptor: (Ljava/nio/file/Path;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
astore 2
start local 2 1: aload 2
invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
astore 3
start local 3 2: aload 3
ifnonnull 4
3: new java.io.IOException
dup
ldc "Cannot delete root."
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: java.nio.file.Path java.nio.file.Path
StackMap stack:
aload 0
aload 3
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(Ljava/nio/file/Path;)Ljava/util/Map$Entry;
astore 4
start local 4 5: aload 4
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
lstore 5
start local 5 6: aload 4
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.util.Map
astore 7
start local 7 7: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
lload 5
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.permissions:Ljava/util/Set;
getstatic java.nio.file.AccessMode.WRITE:Ljava/nio/file/AccessMode;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 9
8: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Read only dir: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals: java.util.Map$Entry long java.util.Map
StackMap stack:
aload 2
invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
astore 8
start local 8 10: aload 7
aload 8
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Long
astore 9
start local 9 11: aload 9
ifnonnull 13
12: new java.nio.file.NoSuchFileException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.NoSuchFileException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals: java.lang.String java.lang.Long
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 9
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.isDirectory:()Z
ifeq 16
14: aload 0
aload 9
invokevirtual java.lang.Long.longValue:()J
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(J)Ljava/util/Map;
invokeinterface java.util.Map.isEmpty:()Z
ifne 16
15: new java.nio.file.DirectoryNotEmptyException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.DirectoryNotEmptyException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 9
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
17: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.blocks:Ljava/util/Map;
aload 9
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
18: aload 7
aload 8
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
19: aload 0
lload 5
aload 7
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.writeDir:(JLjava/util/Map;)V
20: return
end local 9 end local 8 end local 7 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 21 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 21 1 path Ljava/nio/file/Path;
1 21 2 absolutePath Ljava/nio/file/Path;
2 21 3 parentPath Ljava/nio/file/Path;
5 21 4 e Ljava/util/Map$Entry<Ljava/lang/Long;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;>;
6 21 5 inode J
7 21 7 dirents Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
10 21 8 fileName Ljava/lang/String;
11 21 9 fileInode Ljava/lang/Long;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
path
public java.nio.file.DirectoryStream<java.nio.file.Path> newDirectoryStream(java.nio.file.Path, java.nio.file.DirectoryStream$Filter<? super java.nio.file.Path>);
descriptor: (Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 0
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.findInode:(Ljava/nio/file/Path;)Ljava/lang/Long;
astore 3
start local 3 1: aload 3
ifnull 3
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 3
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
dup
astore 4
start local 4 2: invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.isDirectory:()Z
ifne 4
end local 4 3: StackMap locals: java.lang.Long
StackMap stack:
new java.nio.file.NotDirectoryException
dup
new java.lang.StringBuilder
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " is not a directory."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.nio.file.NotDirectoryException.<init>:(Ljava/lang/String;)V
athrow
start local 4 4: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
StackMap stack:
aload 4
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.permissions:Ljava/util/Set;
getstatic java.nio.file.AccessMode.READ:Ljava/nio/file/AccessMode;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 6
5: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Cannot read dir: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$DirectoryStreamImpl
dup
aload 1
aload 0
aload 3
invokevirtual java.lang.Long.longValue:()J
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(J)Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$DirectoryStreamImpl.<init>:(Ljava/nio/file/Path;Ljava/util/Collection;)V
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 7 1 dir Ljava/nio/file/Path;
0 7 2 filter Ljava/nio/file/DirectoryStream$Filter<-Ljava/nio/file/Path;>;
1 7 3 inode Ljava/lang/Long;
2 3 4 fileInfo Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
4 7 4 fileInfo Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
Exceptions:
throws java.io.IOException
Signature: (Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter<-Ljava/nio/file/Path;>;)Ljava/nio/file/DirectoryStream<Ljava/nio/file/Path;>;
MethodParameters:
Name Flags
dir
filter
public java.nio.channels.SeekableByteChannel newByteChannel(java.nio.file.Path, java.util.Set<? extends java.nio.file.OpenOption>, java.nio.file.attribute.FileAttribute<?>[]);
descriptor: (Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=9, locals=25, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
getstatic java.nio.file.StandardOpenOption.APPEND:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 2
aload 2
getstatic java.nio.file.StandardOpenOption.READ:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 2
1: new java.lang.IllegalArgumentException
dup
ldc "READ + APPEND not allowed."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 2
getstatic java.nio.file.StandardOpenOption.SYNC:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 3
aload 2
getstatic java.nio.file.StandardOpenOption.DSYNC:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 4
3: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Not supported yet."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
astore 4
start local 4 5: aload 4
invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
astore 5
start local 5 6: aload 5
ifnonnull 8
7: new java.io.IOException
dup
new java.lang.StringBuilder
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " is a directory."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals: java.nio.file.Path java.nio.file.Path
StackMap stack:
aload 2
getstatic java.nio.file.StandardOpenOption.READ:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
istore 6
start local 6 9: aload 2
getstatic java.nio.file.StandardOpenOption.WRITE:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
istore 7
start local 7 10: aload 2
getstatic java.nio.file.StandardOpenOption.APPEND:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
istore 8
start local 8 11: iload 6
ifne 16
iload 7
ifne 16
12: iload 8
ifeq 15
13: iconst_1
istore 7
14: goto 16
15: StackMap locals: int int int
StackMap stack:
iconst_1
istore 6
16: StackMap locals:
StackMap stack:
aload 0
aload 5
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(Ljava/nio/file/Path;)Ljava/util/Map$Entry;
astore 9
start local 9 17: aload 9
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
lstore 10
start local 10 18: aload 9
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.util.Map
astore 12
start local 12 19: aload 4
invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
astore 13
start local 13 20: aload 12
aload 13
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Long
astore 14
start local 14 21: aload 14
ifnonnull 32
22: aload 2
getstatic java.nio.file.StandardOpenOption.WRITE:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 23
aload 2
getstatic java.nio.file.StandardOpenOption.CREATE:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 24
aload 2
getstatic java.nio.file.StandardOpenOption.CREATE_NEW:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 24
23: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.util.Set java.nio.file.attribute.FileAttribute[] java.nio.file.Path java.nio.file.Path int int int java.util.Map$Entry long java.util.Map java.lang.String java.lang.Long
StackMap stack:
new java.nio.file.NoSuchFileException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.NoSuchFileException.<init>:(Ljava/lang/String;)V
athrow
24: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
lload 10
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.permissions:Ljava/util/Set;
getstatic java.nio.file.AccessMode.WRITE:Ljava/nio/file/AccessMode;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 26
25: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Read only dir: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
26: StackMap locals:
StackMap stack:
aload 0
dup
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.nextInode:J
dup2_x1
lconst_1
ladd
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.nextInode:J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
astore 14
27: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 14
getstatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileType.FILE:Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileType;
invokestatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.newBuilder:(Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileType;)Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo$Builder;
aload 3
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo$Builder.permissions:([Ljava/nio/file/attribute/FileAttribute;)Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo$Builder;
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo$Builder.build:()Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
28: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.blocks:Ljava/util/Map;
aload 14
getstatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem.EMPTY:[B
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
29: aload 12
aload 13
aload 14
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
30: aload 0
lload 10
aload 12
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.writeDir:(JLjava/util/Map;)V
31: goto 41
32: StackMap locals:
StackMap stack:
aload 2
getstatic java.nio.file.StandardOpenOption.CREATE_NEW:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 34
33: new java.nio.file.FileAlreadyExistsException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.FileAlreadyExistsException.<init>:(Ljava/lang/String;)V
athrow
34: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 14
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
astore 15
start local 15 35: aload 15
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.isFile:()Z
ifne 37
36: new java.io.IOException
dup
new java.lang.StringBuilder
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " is a directory."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
37: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
StackMap stack:
iload 6
ifeq 39
aload 15
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.permissions:Ljava/util/Set;
getstatic java.nio.file.AccessMode.READ:Ljava/nio/file/AccessMode;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 39
38: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Cannot read: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
39: StackMap locals:
StackMap stack:
iload 7
ifeq 41
aload 15
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.permissions:Ljava/util/Set;
getstatic java.nio.file.AccessMode.WRITE:Ljava/nio/file/AccessMode;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 41
40: new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Read only: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
end local 15 41: StackMap locals:
StackMap stack:
aload 2
getstatic java.nio.file.StandardOpenOption.DELETE_ON_CLOSE:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
istore 15
start local 15 42: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.blocks:Ljava/util/Map;
aload 14
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast byte[]
astore 16
start local 16 43: iload 7
ifeq 44
aload 2
getstatic java.nio.file.StandardOpenOption.TRUNCATE_EXISTING:Ljava/nio/file/StandardOpenOption;
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 44
getstatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem.EMPTY:[B
goto 45
StackMap locals: int byte[]
StackMap stack:
44: aload 16
aload 16
arraylength
invokestatic java.util.Arrays.copyOf:([BI)[B
StackMap locals:
StackMap stack: byte[]
45: astore 17
start local 17 46: aload 14
invokevirtual java.lang.Long.longValue:()J
lstore 18
start local 18 47: new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$3
dup
aload 0
lload 18
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$3.<init>:(Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;J)V
astore 20
start local 20 48: iload 6
istore 21
start local 21 49: iload 7
istore 22
start local 22 50: new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$4
dup
aload 0
lload 18
iload 21
iload 22
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$4.<init>:(Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;JZZ)V
astore 23
start local 23 51: new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$5
dup
aload 0
iload 15
aload 4
aload 20
aload 23
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$5.<init>:(Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;ZLjava/nio/file/Path;Ljava/util/function/BiConsumer;Ljava/util/function/BiConsumer;)V
astore 24
start local 24 52: new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$ChannelImpl
dup
53: aload 17
54: aload 24
55: iload 6
56: iload 7
57: iload 8
58: invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$ChannelImpl.<init>:([BLjava/util/function/BiConsumer;ZZZ)V
areturn
end local 24 end local 23 end local 22 end local 21 end local 20 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 10 end local 9 end local 8 end local 7 end local 6 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 59 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 59 1 path Ljava/nio/file/Path;
0 59 2 options Ljava/util/Set<+Ljava/nio/file/OpenOption;>;
0 59 3 attrs [Ljava/nio/file/attribute/FileAttribute;
5 59 4 absolutePath Ljava/nio/file/Path;
6 59 5 parentPath Ljava/nio/file/Path;
9 59 6 read Z
10 59 7 write Z
11 59 8 append Z
17 59 9 e Ljava/util/Map$Entry<Ljava/lang/Long;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;>;
18 59 10 parentInode J
19 59 12 parentDirents Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
20 59 13 fileName Ljava/lang/String;
21 59 14 inode Ljava/lang/Long;
35 41 15 fileInfo Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
42 59 15 deleteOnClose Z
43 59 16 origData [B
46 59 17 data [B
47 59 18 inodeFin J
48 59 20 syncAction Ljava/util/function/BiConsumer<[BLjava/lang/Long;>;
49 59 21 readFin Z
50 59 22 writeFin Z
51 59 23 metaSyncAction Ljava/util/function/BiConsumer<[BLjava/lang/Long;>;
52 59 24 closeAction Ljava/util/function/BiConsumer<[BLjava/lang/Long;>;
Exceptions:
throws java.io.IOException
Signature: (Ljava/nio/file/Path;Ljava/util/Set<+Ljava/nio/file/OpenOption;>;[Ljava/nio/file/attribute/FileAttribute<*>;)Ljava/nio/channels/SeekableByteChannel;
MethodParameters:
Name Flags
path
options
attrs
public java.util.Map<java.lang.String, java.lang.Object> readAttributes(java.nio.file.Path, java.lang.String, java.nio.file.LinkOption[]);
descriptor: (Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map;
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=6, locals=11, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
astore 4
start local 4 1: aload 4
invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
astore 5
start local 5 2: aload 5
ifnonnull 4
3: aload 4
astore 5
4: StackMap locals: java.nio.file.Path java.nio.file.Path
StackMap stack:
aload 0
aload 5
getstatic java.nio.file.AccessMode.READ:Ljava/nio/file/AccessMode;
invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
iconst_0
anewarray java.nio.file.LinkOption
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.checkAccess:(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/LinkOption;)V
5: aload 0
aload 4
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.findInode:(Ljava/nio/file/Path;)Ljava/lang/Long;
astore 6
start local 6 6: aload 6
ifnonnull 8
7: new java.nio.file.NoSuchFileException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.NoSuchFileException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals: java.lang.Long
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 6
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
astore 7
start local 7 9: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.blocks:Ljava/util/Map;
aload 6
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast byte[]
arraylength
istore 8
start local 8 10: aload 2
invokestatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem.parse:(Ljava/lang/String;)[Ljava/lang/Object;
astore 9
start local 9 11: aload 9
iconst_0
aaload
checkcast java.lang.String
dup
astore 10
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 2
93508654: 12
106855043: 13
default: 16
}
StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.lang.String java.nio.file.LinkOption[] java.nio.file.Path java.nio.file.Path java.lang.Long com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo int java.lang.Object[] java.lang.String
StackMap stack:
12: aload 10
ldc "basic"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 14
goto 16
StackMap locals:
StackMap stack:
13: aload 10
ldc "posix"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 15
goto 16
14: StackMap locals:
StackMap stack:
new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$BasicFileAttributes
dup
aload 6
invokevirtual java.lang.Long.longValue:()J
aload 7
iload 8
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$BasicFileAttributes.<init>:(JLcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;I)V
aload 9
iconst_1
aaload
checkcast java.lang.String[]
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$BasicFileAttributes.asMap:([Ljava/lang/String;)Ljava/util/Map;
areturn
15: StackMap locals:
StackMap stack:
new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$PermissionsAttributes
dup
aload 6
invokevirtual java.lang.Long.longValue:()J
aload 7
iload 8
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$PermissionsAttributes.<init>:(JLcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;I)V
aload 9
iconst_1
aaload
checkcast java.lang.String[]
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$PermissionsAttributes.asMap:([Ljava/lang/String;)Ljava/util/Map;
areturn
16: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
aload 9
iconst_0
aaload
checkcast java.lang.String
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 9 end local 8 end local 7 end local 6 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/api/test/polyglot/MemoryFileSystem;
0 17 1 path Ljava/nio/file/Path;
0 17 2 attributes Ljava/lang/String;
0 17 3 options [Ljava/nio/file/LinkOption;
1 17 4 absolutePath Ljava/nio/file/Path;
2 17 5 parentPath Ljava/nio/file/Path;
6 17 6 inode Ljava/lang/Long;
9 17 7 fileInfo Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
10 17 8 size I
11 17 9 parsedAttributes [Ljava/lang/Object;
Exceptions:
throws java.io.IOException
Signature: (Ljava/nio/file/Path;Ljava/lang/String;[Ljava/nio/file/LinkOption;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
MethodParameters:
Name Flags
path
attributes
options
public void setAttribute(java.nio.file.Path, java.lang.String, java.lang.Object, java.nio.file.LinkOption[]);
descriptor: (Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/Object;[Ljava/nio/file/LinkOption;)V
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=6, locals=13, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 2
invokestatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem.parse:(Ljava/lang/String;)[Ljava/lang/Object;
astore 5
start local 5 1: aload 5
iconst_1
aaload
checkcast java.lang.String[]
astore 6
start local 6 2: aload 6
arraylength
iconst_1
if_icmpeq 4
3: new java.lang.IllegalArgumentException
dup
aload 2
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: java.lang.Object[] java.lang.String[]
StackMap stack:
aload 0
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
astore 7
start local 7 5: aload 7
invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
astore 8
start local 8 6: aload 8
ifnonnull 8
7: aload 7
astore 8
8: StackMap locals: java.nio.file.Path java.nio.file.Path
StackMap stack:
aload 0
aload 8
getstatic java.nio.file.AccessMode.WRITE:Ljava/nio/file/AccessMode;
invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
iconst_0
anewarray java.nio.file.LinkOption
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.checkAccess:(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/LinkOption;)V
9: aload 0
aload 7
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.findInode:(Ljava/nio/file/Path;)Ljava/lang/Long;
astore 9
start local 9 10: aload 9
ifnonnull 12
11: new java.nio.file.NoSuchFileException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.NoSuchFileException.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals: java.lang.Long
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 9
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
astore 10
start local 10 13: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.blocks:Ljava/util/Map;
aload 9
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast byte[]
arraylength
istore 11
start local 11 14: aload 5
iconst_0
aaload
checkcast java.lang.String
dup
astore 12
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 2
93508654: 15
106855043: 16
default: 21
}
StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo int java.lang.String
StackMap stack:
15: aload 12
ldc "basic"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 17
goto 21
StackMap locals:
StackMap stack:
16: aload 12
ldc "posix"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 19
goto 21
17: StackMap locals:
StackMap stack:
new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$BasicFileAttributes
dup
aload 9
invokevirtual java.lang.Long.longValue:()J
aload 10
iload 11
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$BasicFileAttributes.<init>:(JLcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;I)V
aload 6
iconst_0
aaload
aload 3
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$BasicFileAttributes.setValue:(Ljava/lang/String;Ljava/lang/Object;)Z
pop
18: goto 22
19: StackMap locals:
StackMap stack:
new com.oracle.truffle.api.test.polyglot.MemoryFileSystem$PermissionsAttributes
dup
aload 9
invokevirtual java.lang.Long.longValue:()J
aload 10
iload 11
invokespecial com.oracle.truffle.api.test.polyglot.MemoryFileSystem$PermissionsAttributes.<init>:(JLcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;I)V
aload 6
iconst_0
aaload
aload 3
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$PermissionsAttributes.setValue:(Ljava/lang/String;Ljava/lang/Object;)Z
pop
20: goto 22
21: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
aload 5
iconst_0
aaload
checkcast java.lang.String
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
22: StackMap locals:
StackMap stack:
return
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 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 23 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 23 1 path Ljava/nio/file/Path;
0 23 2 attribute Ljava/lang/String;
0 23 3 value Ljava/lang/Object;
0 23 4 options [Ljava/nio/file/LinkOption;
1 23 5 parsedAttributes [Ljava/lang/Object;
2 23 6 attributeNames [Ljava/lang/String;
5 23 7 absolutePath Ljava/nio/file/Path;
6 23 8 parentPath Ljava/nio/file/Path;
10 23 9 inode Ljava/lang/Long;
13 23 10 fileInfo Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
14 23 11 size I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
path
attribute
value
options
public java.nio.file.Path toAbsolutePath(java.nio.file.Path);
descriptor: (Ljava/nio/file/Path;)Ljava/nio/file/Path;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface java.nio.file.Path.isAbsolute:()Z
ifeq 2
1: aload 1
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.userDir:Ljava/nio/file/Path;
aload 1
invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 3 1 path Ljava/nio/file/Path;
MethodParameters:
Name Flags
path final
public void setCurrentWorkingDirectory(java.nio.file.Path);
descriptor: (Ljava/nio/file/Path;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "Current working directory must be non null."
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
pop
1: aload 0
aload 1
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.userDir:Ljava/nio/file/Path;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 3 1 currentWorkingDirectory Ljava/nio/file/Path;
MethodParameters:
Name Flags
currentWorkingDirectory
public java.nio.file.Path toRealPath(java.nio.file.Path, java.nio.file.LinkOption[]);
descriptor: (Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Ljava/nio/file/Path;
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 1 1 path Ljava/nio/file/Path;
0 1 2 options [Ljava/nio/file/LinkOption;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
path final
options
public void createDirectory(java.nio.file.Path, java.nio.file.attribute.FileAttribute<?>[]);
descriptor: (Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)V
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=4, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.toAbsolutePath:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
astore 3
start local 3 1: aload 3
invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
astore 4
start local 4 2: aload 4
ifnonnull 4
3: new java.io.IOException
dup
ldc "Cannot create root."
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: java.nio.file.Path java.nio.file.Path
StackMap stack:
aload 0
aload 4
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(Ljava/nio/file/Path;)Ljava/util/Map$Entry;
astore 5
start local 5 5: aload 5
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
lstore 6
start local 6 6: aload 5
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.util.Map
astore 8
start local 8 7: aload 3
invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
astore 9
start local 9 8: aload 8
aload 9
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
ifnull 10
9: new java.nio.file.FileAlreadyExistsException
dup
aload 1
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokespecial java.nio.file.FileAlreadyExistsException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.nio.file.attribute.FileAttribute[] java.nio.file.Path java.nio.file.Path java.util.Map$Entry long java.util.Map java.lang.String
StackMap stack:
aload 8
aload 9
aload 0
aload 2
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.createDirectoryImpl:([Ljava/nio/file/attribute/FileAttribute;)J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
11: aload 0
lload 6
aload 8
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.writeDir:(JLjava/util/Map;)V
12: return
end local 9 end local 8 end local 6 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 13 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 13 1 dir Ljava/nio/file/Path;
0 13 2 attrs [Ljava/nio/file/attribute/FileAttribute;
1 13 3 absolutePath Ljava/nio/file/Path;
2 13 4 parentPath Ljava/nio/file/Path;
5 13 5 e Ljava/util/Map$Entry<Ljava/lang/Long;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;>;
6 13 6 inode J
7 13 8 dirents Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
8 13 9 fileName Ljava/lang/String;
Exceptions:
throws java.io.IOException
Signature: (Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute<*>;)V
MethodParameters:
Name Flags
dir
attrs
public java.lang.String getSeparator();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.root:Ljava/nio/file/Path;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath.delegate:Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.getFileSystem:()Ljava/nio/file/FileSystem;
invokevirtual java.nio.file.FileSystem.getSeparator:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
public java.nio.file.Path getTempDirectory();
descriptor: ()Ljava/nio/file/Path;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.tmpDir:Ljava/nio/file/Path;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
private static java.lang.Object[] parse(java.lang.String);
descriptor: (Ljava/lang/String;)[Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=1
start local 0 0: iconst_2
anewarray java.lang.Object
astore 1
start local 1 1: aload 0
bipush 58
invokevirtual java.lang.String.indexOf:(I)I
istore 2
start local 2 2: iload 2
ifge 6
3: aload 1
iconst_0
ldc "basic"
aastore
4: aload 0
astore 3
start local 3 5: goto 10
end local 3 6: StackMap locals: java.lang.Object[] int
StackMap stack:
aload 1
iconst_0
aload 0
iconst_0
iload 2
iinc 2 1
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
aastore
7: iload 2
aload 0
invokevirtual java.lang.String.length:()I
if_icmpne 8
ldc ""
goto 9
StackMap locals:
StackMap stack:
8: aload 0
iload 2
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
StackMap locals:
StackMap stack: java.lang.String
9: astore 3
start local 3 10: StackMap locals: java.lang.String
StackMap stack:
aload 1
iconst_1
aload 3
ldc ","
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
aastore
11: aload 1
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 attributesSelector Ljava/lang/String;
1 12 1 result [Ljava/lang/Object;
2 12 2 index I
5 6 3 names Ljava/lang/String;
10 12 3 names Ljava/lang/String;
MethodParameters:
Name Flags
attributesSelector
private long createDirectoryImpl(java.nio.file.attribute.FileAttribute<?>[]);
descriptor: ([Ljava/nio/file/attribute/FileAttribute;)J
flags: (0x0082) ACC_PRIVATE, ACC_VARARGS
Code:
stack=7, locals=5, args_size=2
start local 0 start local 1 0: getstatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileType.DIRECTORY:Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileType;
invokestatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.newBuilder:(Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileType;)Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo$Builder;
aload 1
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo$Builder.permissions:([Ljava/nio/file/attribute/FileAttribute;)Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo$Builder;
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo$Builder.build:()Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
astore 2
start local 2 1: aload 0
dup
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.nextInode:J
dup2_x1
lconst_1
ladd
putfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.nextInode:J
lstore 3
start local 3 2: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
lload 3
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
3: aload 0
lload 3
invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.writeDir:(JLjava/util/Map;)V
4: lload 3
lreturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 5 1 attrs [Ljava/nio/file/attribute/FileAttribute;
1 5 2 fileInfo Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
2 5 3 currentInode J
Exceptions:
throws java.io.IOException
Signature: ([Ljava/nio/file/attribute/FileAttribute<*>;)J
MethodParameters:
Name Flags
attrs
private java.util.Map<java.lang.String, java.lang.Long> readDir(long);
descriptor: (J)Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=12, args_size=2
start local 0 start local 1 0: aconst_null
astore 3
aconst_null
astore 4
1: new java.io.DataInputStream
dup
new java.io.ByteArrayInputStream
dup
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.blocks:Ljava/util/Map;
lload 1
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast byte[]
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
astore 5
start local 5 2: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 6
start local 6 3: aload 5
invokevirtual java.io.DataInputStream.readInt:()I
istore 7
start local 7 4: iconst_0
istore 8
start local 8 5: goto 10
6: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem long java.lang.Throwable java.lang.Throwable java.io.DataInputStream java.util.Map int int
StackMap stack:
aload 5
invokevirtual java.io.DataInputStream.readUTF:()Ljava/lang/String;
astore 9
start local 9 7: aload 5
invokevirtual java.io.DataInputStream.readLong:()J
lstore 10
start local 10 8: aload 6
aload 9
lload 10
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 10 end local 9 9: iinc 8 1
StackMap locals:
StackMap stack:
10: iload 8
iload 7
if_icmplt 6
end local 8 11: aload 6
12: aload 5
ifnull 13
aload 5
invokevirtual java.io.DataInputStream.close:()V
13: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem long java.lang.Throwable java.lang.Throwable java.io.DataInputStream java.util.Map int
StackMap stack: java.util.Map
areturn
end local 7 end local 6 StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem long java.lang.Throwable java.lang.Throwable java.io.DataInputStream
StackMap stack: java.lang.Throwable
14: astore 3
15: aload 5
ifnull 16
aload 5
invokevirtual java.io.DataInputStream.close:()V
end local 5 StackMap locals:
StackMap stack:
16: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
17: astore 4
aload 3
ifnonnull 18
aload 4
astore 3
goto 19
StackMap locals:
StackMap stack:
18: aload 3
aload 4
if_acmpeq 19
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
19: aload 3
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 20 1 forInode J
2 16 5 in Ljava/io/DataInputStream;
3 14 6 result Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
4 14 7 count I
5 11 8 i I
7 9 9 name Ljava/lang/String;
8 9 10 inode J
Exception table:
from to target type
2 12 14 any
1 13 17 any
14 17 17 any
Exceptions:
throws java.io.IOException
Signature: (J)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
MethodParameters:
Name Flags
forInode
private void writeDir(long, java.util.Map<java.lang.String, java.lang.Long>);
descriptor: (JLjava/util/Map;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 3 0: aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.blocks:Ljava/util/Map;
lload 1
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aload 3
invokestatic com.oracle.truffle.api.test.polyglot.MemoryFileSystem.serializeDir:(Ljava/util/Map;)[B
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
1: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 2 1 forInode J
0 2 3 dir Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
Exceptions:
throws java.io.IOException
Signature: (JLjava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;)V
MethodParameters:
Name Flags
forInode
dir
private static byte[] serializeDir(java.util.Map<java.lang.String, java.lang.Long>);
descriptor: (Ljava/util/Map;)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=7, args_size=1
start local 0 0: aconst_null
astore 1
aconst_null
astore 2
1: new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
astore 3
start local 3 2: new java.io.DataOutputStream
dup
aload 3
invokespecial java.io.DataOutputStream.<init>:(Ljava/io/OutputStream;)V
astore 4
start local 4 3: aload 4
aload 0
invokeinterface java.util.Map.size:()I
invokevirtual java.io.DataOutputStream.writeInt:(I)V
4: aload 0
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 6
goto 8
StackMap locals: java.util.Map java.lang.Throwable java.lang.Throwable java.io.ByteArrayOutputStream java.io.DataOutputStream top java.util.Iterator
StackMap stack:
5: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 5
start local 5 6: aload 4
aload 5
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.io.DataOutputStream.writeUTF:(Ljava/lang/String;)V
7: aload 4
aload 5
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
invokevirtual java.io.DataOutputStream.writeLong:(J)V
end local 5 8: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
9: aload 3
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
10: aload 4
ifnull 11
aload 4
invokevirtual java.io.DataOutputStream.close:()V
StackMap locals: java.util.Map java.lang.Throwable java.lang.Throwable java.io.ByteArrayOutputStream java.io.DataOutputStream
StackMap stack: byte[]
11: aload 3
ifnull 12
aload 3
invokevirtual java.io.ByteArrayOutputStream.close:()V
12: StackMap locals:
StackMap stack: byte[]
areturn
StackMap locals:
StackMap stack: java.lang.Throwable
13: astore 1
14: aload 4
ifnull 15
aload 4
invokevirtual java.io.DataOutputStream.close:()V
end local 4 StackMap locals:
StackMap stack:
15: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
16: astore 2
aload 1
ifnonnull 17
aload 2
astore 1
goto 18
StackMap locals:
StackMap stack:
17: aload 1
aload 2
if_acmpeq 18
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
18: aload 3
ifnull 19
aload 3
invokevirtual java.io.ByteArrayOutputStream.close:()V
end local 3 StackMap locals:
StackMap stack:
19: aload 1
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
20: astore 2
aload 1
ifnonnull 21
aload 2
astore 1
goto 22
StackMap locals:
StackMap stack:
21: aload 1
aload 2
if_acmpeq 22
aload 1
aload 2
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
22: aload 1
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 dir Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
2 19 3 bout Ljava/io/ByteArrayOutputStream;
3 15 4 out Ljava/io/DataOutputStream;
6 8 5 e Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/Long;>;
Exception table:
from to target type
3 10 13 any
2 11 16 any
13 16 16 any
1 12 20 any
13 20 20 any
Exceptions:
throws java.io.IOException
Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;)[B
MethodParameters:
Name Flags
dir
private java.util.Map$Entry<java.lang.Long, java.util.Map<java.lang.String, java.lang.Long>> readDir(java.nio.file.Path);
descriptor: (Ljava/nio/file/Path;)Ljava/util/Map$Entry;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: lconst_0
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
astore 2
start local 2 1: aload 0
aload 2
invokevirtual java.lang.Long.longValue:()J
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(J)Ljava/util/Map;
astore 3
start local 3 2: aload 1
invokeinterface java.nio.file.Path.iterator:()Ljava/util/Iterator;
astore 5
goto 11
StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.lang.Long java.util.Map top java.util.Iterator
StackMap stack:
3: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.nio.file.Path
astore 4
start local 4 4: aload 3
aload 4
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Long
astore 2
5: aload 2
ifnonnull 7
6: new java.io.IOException
dup
ldc "Parent does not exist"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.lang.Long java.util.Map java.nio.file.Path java.util.Iterator
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
astore 6
start local 6 8: aload 6
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.isDirectory:()Z
ifne 10
9: new java.io.IOException
dup
ldc "Parent is not a directory"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
StackMap stack:
aload 0
aload 2
invokevirtual java.lang.Long.longValue:()J
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(J)Ljava/util/Map;
astore 3
end local 6 end local 4 11: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.lang.Long java.util.Map top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
12: new java.util.AbstractMap$SimpleImmutableEntry
dup
aload 2
aload 3
invokespecial java.util.AbstractMap$SimpleImmutableEntry.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 13 1 forDir Ljava/nio/file/Path;
1 13 2 inode Ljava/lang/Long;
2 13 3 dirents Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
4 11 4 p Ljava/nio/file/Path;
8 11 6 fileInfo Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
Exceptions:
throws java.io.IOException
Signature: (Ljava/nio/file/Path;)Ljava/util/Map$Entry<Ljava/lang/Long;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;>;
MethodParameters:
Name Flags
forDir
private java.lang.Long findInode(java.nio.file.Path);
descriptor: (Ljava/nio/file/Path;)Ljava/lang/Long;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=8, args_size=2
start local 0 start local 1 0: lconst_0
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
astore 2
start local 2 1: aload 1
invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
astore 3
start local 3 2: aload 3
ifnonnull 4
3: aload 2
areturn
4: StackMap locals: java.lang.Long java.nio.file.Path
StackMap stack:
aload 0
aload 2
invokevirtual java.lang.Long.longValue:()J
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(J)Ljava/util/Map;
astore 4
start local 4 5: aload 3
invokeinterface java.nio.file.Path.iterator:()Ljava/util/Iterator;
astore 6
goto 14
StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.lang.Long java.nio.file.Path java.util.Map top java.util.Iterator
StackMap stack:
6: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.nio.file.Path
astore 5
start local 5 7: aload 4
aload 5
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Long
astore 2
8: aload 2
ifnonnull 10
9: new java.io.IOException
dup
ldc "Parent does not exist"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.lang.Long java.nio.file.Path java.util.Map java.nio.file.Path java.util.Iterator
StackMap stack:
aload 0
getfield com.oracle.truffle.api.test.polyglot.MemoryFileSystem.inodes:Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
astore 7
start local 7 11: aload 7
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo.isDirectory:()Z
ifne 13
12: new java.io.IOException
dup
ldc "Parent is not a directory"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
StackMap stack:
aload 0
aload 2
invokevirtual java.lang.Long.longValue:()J
invokevirtual com.oracle.truffle.api.test.polyglot.MemoryFileSystem.readDir:(J)Ljava/util/Map;
astore 4
end local 7 end local 5 14: StackMap locals: com.oracle.truffle.api.test.polyglot.MemoryFileSystem java.nio.file.Path java.lang.Long java.nio.file.Path java.util.Map top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
15: aload 4
aload 1
invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Long
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem;
0 16 1 path Ljava/nio/file/Path;
1 16 2 inode Ljava/lang/Long;
2 16 3 parentPath Ljava/nio/file/Path;
5 16 4 dirents Ljava/util/Map<Ljava/lang/String;Ljava/lang/Long;>;
7 14 5 p Ljava/nio/file/Path;
11 14 7 fileInfo Lcom/oracle/truffle/api/test/polyglot/MemoryFileSystem$FileInfo;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
path
}
SourceFile: "MemoryFileSystem.java"
NestMembers:
com.oracle.truffle.api.test.polyglot.MemoryFileSystem$1 com.oracle.truffle.api.test.polyglot.MemoryFileSystem$2 com.oracle.truffle.api.test.polyglot.MemoryFileSystem$3 com.oracle.truffle.api.test.polyglot.MemoryFileSystem$4 com.oracle.truffle.api.test.polyglot.MemoryFileSystem$5 com.oracle.truffle.api.test.polyglot.MemoryFileSystem$BasicFileAttributes com.oracle.truffle.api.test.polyglot.MemoryFileSystem$ChannelImpl com.oracle.truffle.api.test.polyglot.MemoryFileSystem$DirectoryStreamImpl com.oracle.truffle.api.test.polyglot.MemoryFileSystem$DirectoryStreamImpl$1 com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo$Builder com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileType com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath$1 com.oracle.truffle.api.test.polyglot.MemoryFileSystem$PermissionsAttributes
InnerClasses:
com.oracle.truffle.api.test.polyglot.MemoryFileSystem$1
com.oracle.truffle.api.test.polyglot.MemoryFileSystem$2
com.oracle.truffle.api.test.polyglot.MemoryFileSystem$3
com.oracle.truffle.api.test.polyglot.MemoryFileSystem$4
com.oracle.truffle.api.test.polyglot.MemoryFileSystem$5
private BasicFileAttributes = com.oracle.truffle.api.test.polyglot.MemoryFileSystem$BasicFileAttributes of com.oracle.truffle.api.test.polyglot.MemoryFileSystem
private final ChannelImpl = com.oracle.truffle.api.test.polyglot.MemoryFileSystem$ChannelImpl of com.oracle.truffle.api.test.polyglot.MemoryFileSystem
private final DirectoryStreamImpl = com.oracle.truffle.api.test.polyglot.MemoryFileSystem$DirectoryStreamImpl of com.oracle.truffle.api.test.polyglot.MemoryFileSystem
private final FileInfo = com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo of com.oracle.truffle.api.test.polyglot.MemoryFileSystem
private final Builder = com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo$Builder of com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileInfo
private final FileType = com.oracle.truffle.api.test.polyglot.MemoryFileSystem$FileType of com.oracle.truffle.api.test.polyglot.MemoryFileSystem
private final MemoryPath = com.oracle.truffle.api.test.polyglot.MemoryFileSystem$MemoryPath of com.oracle.truffle.api.test.polyglot.MemoryFileSystem
private final PermissionsAttributes = com.oracle.truffle.api.test.polyglot.MemoryFileSystem$PermissionsAttributes of com.oracle.truffle.api.test.polyglot.MemoryFileSystem
public abstract Filter = java.nio.file.DirectoryStream$Filter of java.nio.file.DirectoryStream
public SimpleImmutableEntry = java.util.AbstractMap$SimpleImmutableEntry of java.util.AbstractMap
public abstract Entry = java.util.Map$Entry of java.util.Map