public class sun.nio.ch.SimpleAsynchronousFileChannelImpl extends sun.nio.ch.AsynchronousFileChannelImpl
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: sun.nio.ch.SimpleAsynchronousFileChannelImpl
super_class: sun.nio.ch.AsynchronousFileChannelImpl
{
private static final sun.nio.ch.FileDispatcher nd;
descriptor: Lsun/nio/ch/FileDispatcher;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final sun.nio.ch.NativeThreadSet threads;
descriptor: Lsun/nio/ch/NativeThreadSet;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new sun.nio.ch.FileDispatcherImpl
dup
invokespecial sun.nio.ch.FileDispatcherImpl.<init>:()V
putstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.io.FileDescriptor, boolean, boolean, java.util.concurrent.ExecutorService);
descriptor: (Ljava/io/FileDescriptor;ZZLjava/util/concurrent/ExecutorService;)V
flags: (0x0000)
Code:
stack=5, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
iload 2
iload 3
aload 4
invokespecial sun.nio.ch.AsynchronousFileChannelImpl.<init>:(Ljava/io/FileDescriptor;ZZLjava/util/concurrent/ExecutorService;)V
1: aload 0
new sun.nio.ch.NativeThreadSet
dup
iconst_2
invokespecial sun.nio.ch.NativeThreadSet.<init>:(I)V
putfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
2: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
0 3 1 fdObj Ljava/io/FileDescriptor;
0 3 2 reading Z
0 3 3 writing Z
0 3 4 executor Ljava/util/concurrent/ExecutorService;
MethodParameters:
Name Flags
fdObj
reading
writing
executor
public static java.nio.channels.AsynchronousFileChannel open(java.io.FileDescriptor, boolean, boolean, sun.nio.ch.ThreadPool);
descriptor: (Ljava/io/FileDescriptor;ZZLsun/nio/ch/ThreadPool;)Ljava/nio/channels/AsynchronousFileChannel;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
ifnonnull 2
1: getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl$DefaultExecutorHolder.defaultExecutor:Ljava/util/concurrent/ExecutorService;
goto 3
StackMap locals:
StackMap stack:
2: aload 3
invokevirtual sun.nio.ch.ThreadPool.executor:()Ljava/util/concurrent/ExecutorService;
3: StackMap locals:
StackMap stack: java.util.concurrent.ExecutorService
astore 4
start local 4 4: new sun.nio.ch.SimpleAsynchronousFileChannelImpl
dup
aload 0
iload 1
iload 2
aload 4
invokespecial sun.nio.ch.SimpleAsynchronousFileChannelImpl.<init>:(Ljava/io/FileDescriptor;ZZLjava/util/concurrent/ExecutorService;)V
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 fdo Ljava/io/FileDescriptor;
0 5 1 reading Z
0 5 2 writing Z
0 5 3 pool Lsun/nio/ch/ThreadPool;
4 5 4 executor Ljava/util/concurrent/ExecutorService;
MethodParameters:
Name Flags
fdo
reading
writing
pool
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
dup
astore 1
monitorenter
1: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.closed:Z
ifeq 4
2: aload 1
monitorexit
3: return
4: StackMap locals: java.io.FileDescriptor
StackMap stack:
aload 0
iconst_1
putfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.closed:Z
5: aload 1
monitorexit
6: goto 9
StackMap locals:
StackMap stack: java.lang.Throwable
7: aload 1
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.invalidateAllLocks:()V
10: getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
invokevirtual sun.nio.ch.FileDispatcher.preClose:(Ljava/io/FileDescriptor;)V
11: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
invokevirtual sun.nio.ch.NativeThreadSet.signalAndWait:()V
12: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.closeLock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.lock:()V
13: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.closeLock:Ljava/util/concurrent/locks/ReadWriteLock;
invokeinterface java.util.concurrent.locks.ReadWriteLock.writeLock:()Ljava/util/concurrent/locks/Lock;
invokeinterface java.util.concurrent.locks.Lock.unlock:()V
14: getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
invokevirtual sun.nio.ch.FileDispatcher.close:(Ljava/io/FileDescriptor;)V
15: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
Exception table:
from to target type
1 3 7 any
4 6 7 any
7 8 7 any
Exceptions:
throws java.io.IOException
public long size();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=8, args_size=1
start local 0 0: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
invokevirtual sun.nio.ch.NativeThreadSet.add:()I
istore 1
start local 1 1: lconst_0
lstore 2
start local 2 2: aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.begin:()V
3: StackMap locals: int long
StackMap stack:
getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
invokevirtual sun.nio.ch.FileDispatcher.size:(Ljava/io/FileDescriptor;)J
lstore 2
4: lload 2
ldc -3
lcmp
ifne 5
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifne 3
5: StackMap locals:
StackMap stack:
lload 2
lstore 5
6: aload 0
lload 2
lconst_0
lcmp
iflt 7
iconst_1
goto 8
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long top long
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
7: iconst_0
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long top long
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
8: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
9: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 1
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
10: lload 5
lreturn
11: StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long
StackMap stack: java.lang.Throwable
astore 4
12: aload 0
lload 2
lconst_0
lcmp
iflt 13
iconst_1
goto 14
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long java.lang.Throwable
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
13: iconst_0
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int long java.lang.Throwable
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
14: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
15: aload 4
athrow
end local 2 16: StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
StackMap stack: java.lang.Throwable
astore 7
17: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 1
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
18: aload 7
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
1 19 1 ti I
2 16 2 n J
Exception table:
from to target type
2 6 11 any
1 9 16 any
11 16 16 any
Exceptions:
throws java.io.IOException
public java.nio.channels.AsynchronousFileChannel truncate(long);
descriptor: (J)Ljava/nio/channels/AsynchronousFileChannel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=9, args_size=2
start local 0 start local 1 0: lload 1
lconst_0
lcmp
ifge 2
1: new java.lang.IllegalArgumentException
dup
ldc "Negative size"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
ifne 4
3: new java.nio.channels.NonWritableChannelException
dup
invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
invokevirtual sun.nio.ch.NativeThreadSet.add:()I
istore 3
start local 3 5: lconst_0
lstore 4
start local 4 6: aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.begin:()V
7: StackMap locals: int long
StackMap stack:
getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
invokevirtual sun.nio.ch.FileDispatcher.size:(Ljava/io/FileDescriptor;)J
lstore 4
8: lload 4
ldc -3
lcmp
ifne 9
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifne 7
9: StackMap locals:
StackMap stack:
lload 1
lload 4
lcmp
ifge 12
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifeq 12
10: StackMap locals:
StackMap stack:
getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
lload 1
invokevirtual sun.nio.ch.FileDispatcher.truncate:(Ljava/io/FileDescriptor;J)I
i2l
lstore 4
11: lload 4
ldc -3
lcmp
ifne 12
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifne 10
12: StackMap locals:
StackMap stack:
aload 0
astore 7
13: aload 0
lload 4
lconst_0
lcmp
ifle 14
iconst_1
goto 15
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long top java.nio.channels.AsynchronousFileChannel
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
14: iconst_0
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long top java.nio.channels.AsynchronousFileChannel
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
15: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
16: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 3
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
17: aload 7
areturn
18: StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long
StackMap stack: java.lang.Throwable
astore 6
19: aload 0
lload 4
lconst_0
lcmp
ifle 20
iconst_1
goto 21
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long java.lang.Throwable
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
20: iconst_0
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int long java.lang.Throwable
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
21: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
22: aload 6
athrow
end local 4 23: StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long int
StackMap stack: java.lang.Throwable
astore 8
24: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 3
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
25: aload 8
athrow
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
0 26 1 size J
5 26 3 ti I
6 23 4 n J
Exception table:
from to target type
6 13 18 any
5 16 23 any
18 23 23 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
size
public void force(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
invokevirtual sun.nio.ch.NativeThreadSet.add:()I
istore 2
start local 2 1: iconst_0
istore 3
start local 3 2: aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.begin:()V
3: StackMap locals: int int
StackMap stack:
getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
iload 1
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
invokevirtual sun.nio.ch.FileDispatcher.force:(Ljava/io/FileDescriptor;ZZ)I
istore 3
4: iload 3
bipush -3
if_icmpne 11
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifne 3
5: goto 11
StackMap locals:
StackMap stack: java.lang.Throwable
6: astore 4
7: aload 0
iload 3
iflt 8
iconst_1
goto 9
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int int int java.lang.Throwable
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
8: iconst_0
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int int int java.lang.Throwable
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
9: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
10: aload 4
athrow
11: StackMap locals:
StackMap stack:
aload 0
iload 3
iflt 12
iconst_1
goto 13
StackMap locals:
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl
12: iconst_0
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int int int
StackMap stack: sun.nio.ch.SimpleAsynchronousFileChannelImpl int
13: invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:(Z)V
end local 3 14: goto 18
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl int int
StackMap stack: java.lang.Throwable
15: astore 5
16: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 2
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
17: aload 5
athrow
18: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 2
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
19: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
0 20 1 metaData Z
1 20 2 ti I
2 14 3 n I
Exception table:
from to target type
2 6 6 any
1 15 15 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
metaData
<A> java.util.concurrent.Future<java.nio.channels.FileLock> implLock(long, long, boolean, A, java.nio.channels.CompletionHandler<java.nio.channels.FileLock, ? super A>);
descriptor: (JJZLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
flags: (0x0000)
Code:
stack=12, locals=13, args_size=6
start local 0 start local 1 start local 3 start local 5 start local 6 start local 7 0: iload 5
ifeq 2
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.reading:Z
ifne 2
1: new java.nio.channels.NonReadableChannelException
dup
invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
iload 5
ifne 4
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
ifne 4
3: new java.nio.channels.NonWritableChannelException
dup
invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
lload 1
lload 3
iload 5
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.addToFileLockTable:(JJZ)Lsun/nio/ch/FileLockImpl;
astore 8
start local 8 5: aload 8
ifnonnull 11
6: new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
astore 9
start local 9 7: aload 7
ifnonnull 9
8: aload 9
invokestatic sun.nio.ch.CompletedFuture.withFailure:(Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
areturn
9: StackMap locals: sun.nio.ch.FileLockImpl java.lang.Throwable
StackMap stack:
aload 7
aload 6
aconst_null
aload 9
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;Ljava/util/concurrent/Executor;)V
10: aconst_null
areturn
end local 9 11: StackMap locals:
StackMap stack:
aload 7
ifnonnull 13
12: new sun.nio.ch.PendingFuture
dup
aload 0
invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;)V
goto 14
StackMap locals:
StackMap stack:
13: aconst_null
14: StackMap locals:
StackMap stack: sun.nio.ch.PendingFuture
astore 9
start local 9 15: new sun.nio.ch.SimpleAsynchronousFileChannelImpl$1
dup
aload 0
lload 1
lload 3
iload 5
aload 8
aload 7
aload 9
aload 6
invokespecial sun.nio.ch.SimpleAsynchronousFileChannelImpl$1.<init>:(Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;JJZLsun/nio/ch/FileLockImpl;Ljava/nio/channels/CompletionHandler;Lsun/nio/ch/PendingFuture;Ljava/lang/Object;)V
astore 10
start local 10 16: iconst_0
istore 11
start local 11 17: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
aload 10
invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
18: iconst_1
istore 11
19: goto 24
StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int java.lang.Object java.nio.channels.CompletionHandler sun.nio.ch.FileLockImpl sun.nio.ch.PendingFuture java.lang.Runnable int
StackMap stack: java.lang.Throwable
20: astore 12
21: iload 11
ifne 23
22: aload 0
aload 8
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
23: StackMap locals: java.lang.Throwable
StackMap stack:
aload 12
athrow
24: StackMap locals:
StackMap stack:
iload 11
ifne 26
25: aload 0
aload 8
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
26: StackMap locals:
StackMap stack:
aload 9
areturn
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
0 27 1 position J
0 27 3 size J
0 27 5 shared Z
0 27 6 attachment TA;
0 27 7 handler Ljava/nio/channels/CompletionHandler<Ljava/nio/channels/FileLock;-TA;>;
5 27 8 fli Lsun/nio/ch/FileLockImpl;
7 11 9 exc Ljava/lang/Throwable;
15 27 9 result Lsun/nio/ch/PendingFuture<Ljava/nio/channels/FileLock;TA;>;
16 27 10 task Ljava/lang/Runnable;
17 27 11 executed Z
Exception table:
from to target type
17 20 20 any
Signature: <A:Ljava/lang/Object;>(JJZTA;Ljava/nio/channels/CompletionHandler<Ljava/nio/channels/FileLock;-TA;>;)Ljava/util/concurrent/Future<Ljava/nio/channels/FileLock;>;
MethodParameters:
Name Flags
position final
size final
shared final
attachment final
handler final
public java.nio.channels.FileLock tryLock(long, long, boolean);
descriptor: (JJZ)Ljava/nio/channels/FileLock;
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=12, args_size=4
start local 0 start local 1 start local 3 start local 5 0: iload 5
ifeq 2
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.reading:Z
ifne 2
1: new java.nio.channels.NonReadableChannelException
dup
invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
iload 5
ifne 4
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
ifne 4
3: new java.nio.channels.NonWritableChannelException
dup
invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
lload 1
lload 3
iload 5
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.addToFileLockTable:(JJZ)Lsun/nio/ch/FileLockImpl;
astore 6
start local 6 5: aload 6
ifnonnull 7
6: new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
athrow
7: StackMap locals: sun.nio.ch.FileLockImpl
StackMap stack:
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
invokevirtual sun.nio.ch.NativeThreadSet.add:()I
istore 7
start local 7 8: iconst_0
istore 8
start local 8 9: aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.begin:()V
10: StackMap locals: int int
StackMap stack:
getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
iconst_0
lload 1
lload 3
iload 5
invokevirtual sun.nio.ch.FileDispatcher.lock:(Ljava/io/FileDescriptor;ZJJZ)I
istore 9
start local 9 11: iload 9
iconst_2
if_icmpne 12
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifne 10
12: StackMap locals: int
StackMap stack:
iload 9
ifne 20
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifeq 20
13: iconst_1
istore 8
14: aload 6
astore 11
15: iload 8
ifne 17
16: aload 0
aload 6
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
17: StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int sun.nio.ch.FileLockImpl int int int top java.nio.channels.FileLock
StackMap stack:
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:()V
18: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 7
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
19: aload 11
areturn
20: StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int sun.nio.ch.FileLockImpl int int int
StackMap stack:
iload 9
iconst_m1
if_icmpne 26
21: iload 8
ifne 23
22: aload 0
aload 6
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
23: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:()V
24: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 7
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
25: aconst_null
areturn
26: StackMap locals:
StackMap stack:
iload 9
iconst_2
if_icmpne 28
27: new java.nio.channels.AsynchronousCloseException
dup
invokespecial java.nio.channels.AsynchronousCloseException.<init>:()V
athrow
28: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
end local 9 29: StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int sun.nio.ch.FileLockImpl int int
StackMap stack: java.lang.Throwable
astore 10
30: iload 8
ifne 32
31: aload 0
aload 6
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.removeFromFileLockTable:(Lsun/nio/ch/FileLockImpl;)V
32: StackMap locals: sun.nio.ch.SimpleAsynchronousFileChannelImpl long long int sun.nio.ch.FileLockImpl int int top java.lang.Throwable
StackMap stack:
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.end:()V
33: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.threads:Lsun/nio/ch/NativeThreadSet;
iload 7
invokevirtual sun.nio.ch.NativeThreadSet.remove:(I)V
34: aload 10
athrow
end local 8 end local 7 end local 6 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
0 35 1 position J
0 35 3 size J
0 35 5 shared Z
5 35 6 fli Lsun/nio/ch/FileLockImpl;
8 35 7 ti I
9 35 8 gotLock Z
11 29 9 n I
Exception table:
from to target type
9 15 29 any
20 21 29 any
26 29 29 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
position
size
shared
protected void implRelease(sun.nio.ch.FileLockImpl);
descriptor: (Lsun/nio/ch/FileLockImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: getstatic sun.nio.ch.SimpleAsynchronousFileChannelImpl.nd:Lsun/nio/ch/FileDispatcher;
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.fdObj:Ljava/io/FileDescriptor;
aload 1
invokevirtual sun.nio.ch.FileLockImpl.position:()J
aload 1
invokevirtual sun.nio.ch.FileLockImpl.size:()J
invokevirtual sun.nio.ch.FileDispatcher.release:(Ljava/io/FileDescriptor;JJ)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
0 2 1 fli Lsun/nio/ch/FileLockImpl;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fli
<A> java.util.concurrent.Future<java.lang.Integer> implRead(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
descriptor: (Ljava/nio/ByteBuffer;JLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
flags: (0x0000)
Code:
stack=9, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: lload 2
lconst_0
lcmp
ifge 2
1: new java.lang.IllegalArgumentException
dup
ldc "Negative position"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.reading:Z
ifne 4
3: new java.nio.channels.NonReadableChannelException
dup
invokespecial java.nio.channels.NonReadableChannelException.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.isReadOnly:()Z
ifeq 6
5: new java.lang.IllegalArgumentException
dup
ldc "Read-only buffer"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifeq 7
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
ifne 14
7: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifeq 8
aconst_null
goto 9
StackMap locals:
StackMap stack:
8: new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
StackMap locals:
StackMap stack: java.nio.channels.ClosedChannelException
9: astore 6
start local 6 10: aload 5
ifnonnull 12
11: iconst_0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 6
invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
areturn
12: StackMap locals: java.lang.Throwable
StackMap stack:
aload 5
aload 4
iconst_0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 6
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;Ljava/util/concurrent/Executor;)V
13: aconst_null
areturn
end local 6 14: StackMap locals:
StackMap stack:
aload 5
ifnonnull 16
15: new sun.nio.ch.PendingFuture
dup
aload 0
invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;)V
goto 17
StackMap locals:
StackMap stack:
16: aconst_null
17: StackMap locals:
StackMap stack: sun.nio.ch.PendingFuture
astore 6
start local 6 18: new sun.nio.ch.SimpleAsynchronousFileChannelImpl$2
dup
aload 0
aload 1
lload 2
aload 5
aload 6
aload 4
invokespecial sun.nio.ch.SimpleAsynchronousFileChannelImpl$2.<init>:(Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;Ljava/nio/ByteBuffer;JLjava/nio/channels/CompletionHandler;Lsun/nio/ch/PendingFuture;Ljava/lang/Object;)V
astore 7
start local 7 19: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
aload 7
invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
20: aload 6
areturn
end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
0 21 1 dst Ljava/nio/ByteBuffer;
0 21 2 position J
0 21 4 attachment TA;
0 21 5 handler Ljava/nio/channels/CompletionHandler<Ljava/lang/Integer;-TA;>;
10 14 6 exc Ljava/lang/Throwable;
18 21 6 result Lsun/nio/ch/PendingFuture<Ljava/lang/Integer;TA;>;
19 21 7 task Ljava/lang/Runnable;
Signature: <A:Ljava/lang/Object;>(Ljava/nio/ByteBuffer;JTA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Integer;-TA;>;)Ljava/util/concurrent/Future<Ljava/lang/Integer;>;
MethodParameters:
Name Flags
dst final
position final
attachment final
handler final
<A> java.util.concurrent.Future<java.lang.Integer> implWrite(java.nio.ByteBuffer, long, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>);
descriptor: (Ljava/nio/ByteBuffer;JLjava/lang/Object;Ljava/nio/channels/CompletionHandler;)Ljava/util/concurrent/Future;
flags: (0x0000)
Code:
stack=9, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: lload 2
lconst_0
lcmp
ifge 2
1: new java.lang.IllegalArgumentException
dup
ldc "Negative position"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.writing:Z
ifne 4
3: new java.nio.channels.NonWritableChannelException
dup
invokespecial java.nio.channels.NonWritableChannelException.<init>:()V
athrow
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifeq 5
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
ifne 12
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.nio.ch.SimpleAsynchronousFileChannelImpl.isOpen:()Z
ifeq 6
aconst_null
goto 7
StackMap locals:
StackMap stack:
6: new java.nio.channels.ClosedChannelException
dup
invokespecial java.nio.channels.ClosedChannelException.<init>:()V
StackMap locals:
StackMap stack: java.nio.channels.ClosedChannelException
7: astore 6
start local 6 8: aload 5
ifnonnull 10
9: iconst_0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 6
invokestatic sun.nio.ch.CompletedFuture.withResult:(Ljava/lang/Object;Ljava/lang/Throwable;)Lsun/nio/ch/CompletedFuture;
areturn
10: StackMap locals: java.lang.Throwable
StackMap stack:
aload 5
aload 4
iconst_0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 6
aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
invokestatic sun.nio.ch.Invoker.invokeIndirectly:(Ljava/nio/channels/CompletionHandler;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;Ljava/util/concurrent/Executor;)V
11: aconst_null
areturn
end local 6 12: StackMap locals:
StackMap stack:
aload 5
ifnonnull 14
13: new sun.nio.ch.PendingFuture
dup
aload 0
invokespecial sun.nio.ch.PendingFuture.<init>:(Ljava/nio/channels/AsynchronousChannel;)V
goto 15
StackMap locals:
StackMap stack:
14: aconst_null
15: StackMap locals:
StackMap stack: sun.nio.ch.PendingFuture
astore 6
start local 6 16: new sun.nio.ch.SimpleAsynchronousFileChannelImpl$3
dup
aload 0
aload 1
lload 2
aload 5
aload 6
aload 4
invokespecial sun.nio.ch.SimpleAsynchronousFileChannelImpl$3.<init>:(Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;Ljava/nio/ByteBuffer;JLjava/nio/channels/CompletionHandler;Lsun/nio/ch/PendingFuture;Ljava/lang/Object;)V
astore 7
start local 7 17: aload 0
getfield sun.nio.ch.SimpleAsynchronousFileChannelImpl.executor:Ljava/util/concurrent/ExecutorService;
aload 7
invokeinterface java.util.concurrent.ExecutorService.execute:(Ljava/lang/Runnable;)V
18: aload 6
areturn
end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lsun/nio/ch/SimpleAsynchronousFileChannelImpl;
0 19 1 src Ljava/nio/ByteBuffer;
0 19 2 position J
0 19 4 attachment TA;
0 19 5 handler Ljava/nio/channels/CompletionHandler<Ljava/lang/Integer;-TA;>;
8 12 6 exc Ljava/lang/Throwable;
16 19 6 result Lsun/nio/ch/PendingFuture<Ljava/lang/Integer;TA;>;
17 19 7 task Ljava/lang/Runnable;
Signature: <A:Ljava/lang/Object;>(Ljava/nio/ByteBuffer;JTA;Ljava/nio/channels/CompletionHandler<Ljava/lang/Integer;-TA;>;)Ljava/util/concurrent/Future<Ljava/lang/Integer;>;
MethodParameters:
Name Flags
src final
position final
attachment final
handler final
}
SourceFile: "SimpleAsynchronousFileChannelImpl.java"
NestMembers:
sun.nio.ch.SimpleAsynchronousFileChannelImpl$1 sun.nio.ch.SimpleAsynchronousFileChannelImpl$2 sun.nio.ch.SimpleAsynchronousFileChannelImpl$3 sun.nio.ch.SimpleAsynchronousFileChannelImpl$DefaultExecutorHolder
InnerClasses:
sun.nio.ch.SimpleAsynchronousFileChannelImpl$1
sun.nio.ch.SimpleAsynchronousFileChannelImpl$2
sun.nio.ch.SimpleAsynchronousFileChannelImpl$3
private DefaultExecutorHolder = sun.nio.ch.SimpleAsynchronousFileChannelImpl$DefaultExecutorHolder of sun.nio.ch.SimpleAsynchronousFileChannelImpl