final class sun.rmi.transport.tcp.MultiplexInputStream extends java.io.InputStream
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.rmi.transport.tcp.MultiplexInputStream
super_class: java.io.InputStream
{
private sun.rmi.transport.tcp.ConnectionMultiplexer manager;
descriptor: Lsun/rmi/transport/tcp/ConnectionMultiplexer;
flags: (0x0002) ACC_PRIVATE
private sun.rmi.transport.tcp.MultiplexConnectionInfo info;
descriptor: Lsun/rmi/transport/tcp/MultiplexConnectionInfo;
flags: (0x0002) ACC_PRIVATE
private byte[] buffer;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private int present;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int pos;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int requested;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean disconnected;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.lang.Object lock;
descriptor: Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
private int waterMark;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private byte[] temp;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
void <init>(sun.rmi.transport.tcp.ConnectionMultiplexer, sun.rmi.transport.tcp.MultiplexConnectionInfo, int);
descriptor: (Lsun/rmi/transport/tcp/ConnectionMultiplexer;Lsun/rmi/transport/tcp/MultiplexConnectionInfo;I)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.io.InputStream.<init>:()V
1: aload 0
iconst_0
putfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
2: aload 0
iconst_0
putfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
3: aload 0
iconst_0
putfield sun.rmi.transport.tcp.MultiplexInputStream.requested:I
4: aload 0
iconst_0
putfield sun.rmi.transport.tcp.MultiplexInputStream.disconnected:Z
5: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
6: aload 0
iconst_1
newarray 8
putfield sun.rmi.transport.tcp.MultiplexInputStream.temp:[B
7: aload 0
aload 1
putfield sun.rmi.transport.tcp.MultiplexInputStream.manager:Lsun/rmi/transport/tcp/ConnectionMultiplexer;
8: aload 0
aload 2
putfield sun.rmi.transport.tcp.MultiplexInputStream.info:Lsun/rmi/transport/tcp/MultiplexConnectionInfo;
9: aload 0
iload 3
newarray 8
putfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
10: aload 0
iload 3
iconst_2
idiv
putfield sun.rmi.transport.tcp.MultiplexInputStream.waterMark:I
11: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/rmi/transport/tcp/MultiplexInputStream;
0 12 1 manager Lsun/rmi/transport/tcp/ConnectionMultiplexer;
0 12 2 info Lsun/rmi/transport/tcp/MultiplexConnectionInfo;
0 12 3 bufferLength I
MethodParameters:
Name Flags
manager
info
bufferLength
public synchronized int read();
descriptor: ()I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.temp:[B
iconst_0
iconst_1
invokevirtual sun.rmi.transport.tcp.MultiplexInputStream.read:([BII)I
istore 1
start local 1 1: iload 1
iconst_1
if_icmpeq 3
2: iconst_m1
ireturn
3: StackMap locals: int
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.temp:[B
iconst_0
baload
sipush 255
iand
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/rmi/transport/tcp/MultiplexInputStream;
1 4 1 n I
Exceptions:
throws java.io.IOException
public synchronized int read(byte[], int, int);
descriptor: ([BII)I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=6, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
ifgt 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
dup
astore 5
monitorenter
3: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
if_icmplt 5
4: aload 0
aload 0
iconst_0
dup_x1
putfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
putfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
goto 9
5: StackMap locals: sun.rmi.transport.tcp.MultiplexInputStream byte[] int int top java.lang.Object
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.waterMark:I
if_icmplt 9
6: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
iconst_0
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
7: aload 0
dup
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
isub
putfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
8: aload 0
iconst_0
putfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
9: StackMap locals:
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
arraylength
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
isub
istore 6
start local 6 10: iload 6
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.requested:I
isub
iconst_0
invokestatic java.lang.Math.max:(II)I
istore 4
end local 6 start local 4 11: aload 5
monitorexit
12: goto 15
end local 4 StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 5
monitorexit
14: athrow
start local 4 15: StackMap locals: sun.rmi.transport.tcp.MultiplexInputStream byte[] int int int
StackMap stack:
iload 4
ifle 17
16: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.manager:Lsun/rmi/transport/tcp/ConnectionMultiplexer;
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.info:Lsun/rmi/transport/tcp/MultiplexConnectionInfo;
iload 4
invokevirtual sun.rmi.transport.tcp.ConnectionMultiplexer.sendRequest:(Lsun/rmi/transport/tcp/MultiplexConnectionInfo;I)V
17: StackMap locals:
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
dup
astore 5
monitorenter
18: aload 0
dup
getfield sun.rmi.transport.tcp.MultiplexInputStream.requested:I
iload 4
iadd
putfield sun.rmi.transport.tcp.MultiplexInputStream.requested:I
19: goto 23
20: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
invokevirtual java.lang.Object.wait:()V
21: goto 23
StackMap locals:
StackMap stack: java.lang.InterruptedException
22: pop
23: StackMap locals:
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
if_icmplt 24
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.disconnected:Z
ifeq 20
24: StackMap locals:
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.disconnected:Z
ifeq 27
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
if_icmplt 27
25: aload 5
monitorexit
26: iconst_m1
ireturn
27: StackMap locals:
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
isub
istore 6
start local 6 28: iload 3
iload 6
if_icmpge 33
29: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
aload 1
iload 2
iload 3
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
30: aload 0
dup
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
iload 3
iadd
putfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
31: iload 3
aload 5
monitorexit
32: ireturn
33: StackMap locals: int
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
aload 1
iload 2
iload 6
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
34: aload 0
aload 0
iconst_0
dup_x1
putfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
putfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
35: iload 6
aload 5
monitorexit
36: ireturn
end local 6 37: StackMap locals: sun.rmi.transport.tcp.MultiplexInputStream byte[] int int int java.lang.Object
StackMap stack: java.lang.Throwable
aload 5
monitorexit
38: athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 39 0 this Lsun/rmi/transport/tcp/MultiplexInputStream;
0 39 1 b [B
0 39 2 off I
0 39 3 len I
11 13 4 moreSpace I
15 39 4 moreSpace I
10 11 6 freeSpace I
28 37 6 available I
Exception table:
from to target type
3 12 13 any
13 14 13 any
20 21 22 Class java.lang.InterruptedException
18 26 37 any
27 32 37 any
33 36 37 any
37 38 37 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
b
off
len
public int available();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
isub
aload 1
monitorexit
2: ireturn
3: StackMap locals: sun.rmi.transport.tcp.MultiplexInputStream java.lang.Object
StackMap stack: java.lang.Throwable
aload 1
monitorexit
4: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/rmi/transport/tcp/MultiplexInputStream;
Exception table:
from to target type
1 2 3 any
3 4 3 any
Exceptions:
throws java.io.IOException
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.manager:Lsun/rmi/transport/tcp/ConnectionMultiplexer;
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.info:Lsun/rmi/transport/tcp/MultiplexConnectionInfo;
invokevirtual sun.rmi.transport.tcp.ConnectionMultiplexer.sendClose:(Lsun/rmi/transport/tcp/MultiplexConnectionInfo;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/rmi/transport/tcp/MultiplexInputStream;
Exceptions:
throws java.io.IOException
void receive(int, java.io.DataInputStream);
descriptor: (ILjava/io/DataInputStream;)V
flags: (0x0000)
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
dup
astore 3
monitorenter
1: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
ifle 5
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
arraylength
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
isub
iload 1
if_icmpge 5
2: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
iconst_0
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
3: aload 0
dup
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
isub
putfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
4: aload 0
iconst_0
putfield sun.rmi.transport.tcp.MultiplexInputStream.pos:I
5: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
arraylength
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
isub
iload 1
if_icmpge 7
6: new java.io.IOException
dup
ldc "Receive buffer overflow"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
aload 2
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.buffer:[B
aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
iload 1
invokevirtual java.io.DataInputStream.readFully:([BII)V
8: aload 0
dup
getfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
iload 1
iadd
putfield sun.rmi.transport.tcp.MultiplexInputStream.present:I
9: aload 0
dup
getfield sun.rmi.transport.tcp.MultiplexInputStream.requested:I
iload 1
isub
putfield sun.rmi.transport.tcp.MultiplexInputStream.requested:I
10: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
11: aload 3
monitorexit
12: goto 15
StackMap locals:
StackMap stack: java.lang.Throwable
13: aload 3
monitorexit
14: athrow
15: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/rmi/transport/tcp/MultiplexInputStream;
0 16 1 length I
0 16 2 in Ljava/io/DataInputStream;
Exception table:
from to target type
1 12 13 any
13 14 13 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
length
in
void disconnect();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
iconst_1
putfield sun.rmi.transport.tcp.MultiplexInputStream.disconnected:Z
2: aload 0
getfield sun.rmi.transport.tcp.MultiplexInputStream.lock:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
3: aload 1
monitorexit
4: goto 7
StackMap locals: sun.rmi.transport.tcp.MultiplexInputStream java.lang.Object
StackMap stack: java.lang.Throwable
5: aload 1
monitorexit
6: athrow
7: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/rmi/transport/tcp/MultiplexInputStream;
Exception table:
from to target type
1 4 5 any
5 6 5 any
}
SourceFile: "MultiplexInputStream.java"