class jtermios.windows.JTermiosImpl$Port
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: jtermios.windows.JTermiosImpl$Port
super_class: java.lang.Object
{
volatile int m_FD;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile boolean m_Locked;
descriptor: Z
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$HANDLE m_Comm;
descriptor: Ljtermios/windows/WinAPI$HANDLE;
flags: (0x0040) ACC_VOLATILE
volatile int m_OpenFlags;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$DCB m_DCB;
descriptor: Ljtermios/windows/WinAPI$DCB;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$COMMTIMEOUTS m_Timeouts;
descriptor: Ljtermios/windows/WinAPI$COMMTIMEOUTS;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$COMSTAT m_COMSTAT;
descriptor: Ljtermios/windows/WinAPI$COMSTAT;
flags: (0x0040) ACC_VOLATILE
volatile int[] m_ClearErr;
descriptor: [I
flags: (0x0040) ACC_VOLATILE
volatile com.sun.jna.Memory m_RdBuffer;
descriptor: Lcom/sun/jna/Memory;
flags: (0x0040) ACC_VOLATILE
volatile int[] m_RdErr;
descriptor: [I
flags: (0x0040) ACC_VOLATILE
volatile int[] m_RdN;
descriptor: [I
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$OVERLAPPED m_RdOVL;
descriptor: Ljtermios/windows/WinAPI$OVERLAPPED;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$HANDLE m_ReadCancelObject;
descriptor: Ljtermios/windows/WinAPI$HANDLE;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$HANDLE[] m_ReadWaitObjects;
descriptor: [Ljtermios/windows/WinAPI$HANDLE;
flags: (0x0040) ACC_VOLATILE
volatile com.sun.jna.Memory m_WrBuffer;
descriptor: Lcom/sun/jna/Memory;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$COMSTAT m_WrStat;
descriptor: Ljtermios/windows/WinAPI$COMSTAT;
flags: (0x0040) ACC_VOLATILE
volatile int[] m_WrErr;
descriptor: [I
flags: (0x0040) ACC_VOLATILE
volatile int[] m_WrN;
descriptor: [I
flags: (0x0040) ACC_VOLATILE
volatile int m_WritePending;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$OVERLAPPED m_WrOVL;
descriptor: Ljtermios/windows/WinAPI$OVERLAPPED;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$HANDLE m_WriteCancelObject;
descriptor: Ljtermios/windows/WinAPI$HANDLE;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$HANDLE[] m_WriteWaitObjects;
descriptor: [Ljtermios/windows/WinAPI$HANDLE;
flags: (0x0040) ACC_VOLATILE
volatile boolean m_WaitPending;
descriptor: Z
flags: (0x0040) ACC_VOLATILE
volatile int[] m_SelN;
descriptor: [I
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$HANDLE WaitCommEventCancelObject;
descriptor: Ljtermios/windows/WinAPI$HANDLE;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.windows.WinAPI$OVERLAPPED m_SelOVL;
descriptor: Ljtermios/windows/WinAPI$OVERLAPPED;
flags: (0x0040) ACC_VOLATILE
volatile com.sun.jna.ptr.IntByReference m_EventFlags;
descriptor: Lcom/sun/jna/ptr/IntByReference;
flags: (0x0040) ACC_VOLATILE
volatile jtermios.Termios m_Termios;
descriptor: Ljtermios/Termios;
flags: (0x0040) ACC_VOLATILE
volatile int MSR;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile int m_VTIME;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile int m_VMIN;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile int m_c_speed;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile int m_c_cflag;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile int m_c_iflag;
descriptor: I
flags: (0x0040) ACC_VOLATILE
volatile int m_c_oflag;
descriptor: I
flags: (0x0040) ACC_VOLATILE
final jtermios.windows.JTermiosImpl this$0;
descriptor: Ljtermios/windows/JTermiosImpl;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(jtermios.windows.JTermiosImpl);
descriptor: (Ljtermios/windows/JTermiosImpl;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_FD:I
2: aload 0
new jtermios.windows.WinAPI$DCB
dup
invokespecial jtermios.windows.WinAPI$DCB.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_DCB:Ljtermios/windows/WinAPI$DCB;
3: aload 0
new jtermios.windows.WinAPI$COMMTIMEOUTS
dup
invokespecial jtermios.windows.WinAPI$COMMTIMEOUTS.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_Timeouts:Ljtermios/windows/WinAPI$COMMTIMEOUTS;
4: aload 0
new jtermios.windows.WinAPI$COMSTAT
dup
invokespecial jtermios.windows.WinAPI$COMSTAT.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_COMSTAT:Ljtermios/windows/WinAPI$COMSTAT;
5: aload 0
iconst_1
newarray 10
putfield jtermios.windows.JTermiosImpl$Port.m_ClearErr:[I
6: aload 0
new com.sun.jna.Memory
dup
ldc 2048
invokespecial com.sun.jna.Memory.<init>:(J)V
putfield jtermios.windows.JTermiosImpl$Port.m_RdBuffer:Lcom/sun/jna/Memory;
7: aload 0
iconst_1
newarray 10
putfield jtermios.windows.JTermiosImpl$Port.m_RdErr:[I
8: aload 0
iconst_1
newarray 10
putfield jtermios.windows.JTermiosImpl$Port.m_RdN:[I
9: aload 0
new jtermios.windows.WinAPI$OVERLAPPED
dup
invokespecial jtermios.windows.WinAPI$OVERLAPPED.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_RdOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
10: aload 0
iconst_2
anewarray jtermios.windows.WinAPI$HANDLE
putfield jtermios.windows.JTermiosImpl$Port.m_ReadWaitObjects:[Ljtermios/windows/WinAPI$HANDLE;
11: aload 0
new com.sun.jna.Memory
dup
ldc 2048
invokespecial com.sun.jna.Memory.<init>:(J)V
putfield jtermios.windows.JTermiosImpl$Port.m_WrBuffer:Lcom/sun/jna/Memory;
12: aload 0
new jtermios.windows.WinAPI$COMSTAT
dup
invokespecial jtermios.windows.WinAPI$COMSTAT.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_WrStat:Ljtermios/windows/WinAPI$COMSTAT;
13: aload 0
iconst_1
newarray 10
putfield jtermios.windows.JTermiosImpl$Port.m_WrErr:[I
14: aload 0
iconst_1
newarray 10
putfield jtermios.windows.JTermiosImpl$Port.m_WrN:[I
15: aload 0
new jtermios.windows.WinAPI$OVERLAPPED
dup
invokespecial jtermios.windows.WinAPI$OVERLAPPED.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_WrOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
16: aload 0
iconst_2
anewarray jtermios.windows.WinAPI$HANDLE
putfield jtermios.windows.JTermiosImpl$Port.m_WriteWaitObjects:[Ljtermios/windows/WinAPI$HANDLE;
17: aload 0
iconst_1
newarray 10
putfield jtermios.windows.JTermiosImpl$Port.m_SelN:[I
18: aload 0
new jtermios.windows.WinAPI$OVERLAPPED
dup
invokespecial jtermios.windows.WinAPI$OVERLAPPED.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_SelOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
19: aload 0
new com.sun.jna.ptr.IntByReference
dup
invokespecial com.sun.jna.ptr.IntByReference.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_EventFlags:Lcom/sun/jna/ptr/IntByReference;
20: aload 0
new jtermios.Termios
dup
invokespecial jtermios.Termios.<init>:()V
putfield jtermios.windows.JTermiosImpl$Port.m_Termios:Ljtermios/Termios;
21: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_VTIME:I
22: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_VMIN:I
23: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_c_speed:I
24: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_c_cflag:I
25: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_c_iflag:I
26: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_c_oflag:I
27: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Ljtermios/windows/JTermiosImpl$Port;
MethodParameters:
Name Flags
this$0 final
public synchronized void fail();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=8, locals=4, args_size=1
start local 0 0: invokestatic jtermios.windows.WinAPI.GetLastError:()I
istore 1
start local 1 1: new com.sun.jna.Memory
dup
ldc 2048
invokespecial com.sun.jna.Memory.<init>:(J)V
astore 2
start local 2 2: sipush 4608
aconst_null
iload 1
iconst_0
iconst_1
invokestatic jtermios.windows.WinAPI.MAKELANGID:(II)I
aload 2
aload 2
invokevirtual com.sun.jna.Memory.size:()J
l2i
aconst_null
invokestatic jtermios.windows.WinAPI.FormatMessageW:(ILcom/sun/jna/Pointer;IILcom/sun/jna/Pointer;ILcom/sun/jna/Pointer;)I
pop
3: getstatic jtermios.JTermios$JTermiosLogging.log:Z
ifeq 4
iconst_1
ldc "fail() %s, Windows GetLastError()= %d, %s\n"
iconst_3
anewarray java.lang.Object
dup
iconst_0
iconst_1
invokestatic jtermios.JTermios$JTermiosLogging.lineno:(I)Ljava/lang/String;
aastore
dup
iconst_1
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_2
aload 2
lconst_0
invokevirtual com.sun.jna.Memory.getWideString:(J)Ljava/lang/String;
aastore
invokestatic jtermios.JTermios$JTermiosLogging.log:(ILjava/lang/String;[Ljava/lang/Object;)Z
ifeq 4
iconst_1
goto 5
StackMap locals: int com.sun.jna.Memory
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: putstatic jtermios.JTermios$JTermiosLogging.log:Z
6: new jtermios.windows.JTermiosImpl$Fail
dup
invokespecial jtermios.windows.JTermiosImpl$Fail.<init>:()V
astore 3
start local 3 7: aload 3
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Ljtermios/windows/JTermiosImpl$Port;
1 8 1 err I
2 8 2 buffer Lcom/sun/jna/Memory;
7 8 3 f Ljtermios/windows/JTermiosImpl$Fail;
Exceptions:
throws jtermios.windows.JTermiosImpl$Fail
public synchronized void lock();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: goto 2
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.Object.wait:()V
2: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Locked:Z
ifne 1
3: aload 0
iconst_1
putfield jtermios.windows.JTermiosImpl$Port.m_Locked:Z
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljtermios/windows/JTermiosImpl$Port;
Exceptions:
throws java.lang.InterruptedException
public synchronized void unlock();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Locked:Z
ifne 2
1: new java.lang.IllegalArgumentException
dup
ldc "Port was not locked"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield jtermios.windows.JTermiosImpl$Port.m_Locked:Z
3: aload 0
invokevirtual java.lang.Object.notifyAll:()V
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Ljtermios/windows/JTermiosImpl$Port;
public synchronized void waitUnlock();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: goto 4
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.Object.wait:()V
2: goto 4
StackMap locals:
StackMap stack: java.lang.InterruptedException
3: pop
4: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Locked:Z
ifne 1
5: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Ljtermios/windows/JTermiosImpl$Port;
Exception table:
from to target type
1 2 3 Class java.lang.InterruptedException
public void open(java.lang.String, int);
descriptor: (Ljava/lang/String;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
dup
astore 3
monitorenter
1: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_FD:I
2: iconst_0
istore 4
start local 4 3: goto 48
4: StackMap locals: jtermios.windows.JTermiosImpl int
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
getfield jtermios.windows.JTermiosImpl.m_PortFDs:[Z
iload 4
baload
ifne 47
5: aload 0
iload 4
putfield jtermios.windows.JTermiosImpl$Port.m_FD:I
6: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
getfield jtermios.windows.JTermiosImpl.m_PortFDs:[Z
iload 4
iconst_1
bastore
7: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
getfield jtermios.windows.JTermiosImpl.m_OpenPorts:Ljava/util/Hashtable;
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_FD:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 0
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
8: aload 0
iload 2
putfield jtermios.windows.JTermiosImpl$Port.m_OpenFlags:I
9: aload 1
ldc "\\\\"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 11
10: new java.lang.StringBuilder
dup
ldc "\\\\.\\"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
11: StackMap locals:
StackMap stack:
aload 0
aload 1
ldc -1073741824
iconst_0
aconst_null
iconst_3
ldc 1073741824
aconst_null
invokestatic jtermios.windows.WinAPI.CreateFile:(Ljava/lang/String;IILjtermios/windows/WinAPI$SECURITY_ATTRIBUTES;IILcom/sun/jna/Pointer;)Ljtermios/windows/WinAPI$HANDLE;
putfield jtermios.windows.JTermiosImpl$Port.m_Comm:Ljtermios/windows/WinAPI$HANDLE;
12: getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Comm:Ljtermios/windows/WinAPI$HANDLE;
if_acmpne 17
13: invokestatic jtermios.windows.WinAPI.GetLastError:()I
iconst_2
if_icmpne 15
14: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
getstatic jtermios.JTermios.ENOENT:I
putfield jtermios.windows.JTermiosImpl.m_ErrNo:I
goto 16
15: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
getstatic jtermios.JTermios.EBUSY:I
putfield jtermios.windows.JTermiosImpl.m_ErrNo:I
16: StackMap locals:
StackMap stack:
aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.fail:()V
17: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Comm:Ljtermios/windows/WinAPI$HANDLE;
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_RdBuffer:Lcom/sun/jna/Memory;
invokevirtual com.sun.jna.Memory.size:()J
l2i
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WrBuffer:Lcom/sun/jna/Memory;
invokevirtual com.sun.jna.Memory.size:()J
l2i
invokestatic jtermios.windows.WinAPI.SetupComm:(Ljtermios/windows/WinAPI$HANDLE;II)Z
ifne 19
18: aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.fail:()V
19: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Termios:Ljtermios/Termios;
invokevirtual jtermios.windows.JTermiosImpl.cfmakeraw:(Ljtermios/Termios;)V
20: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Termios:Ljtermios/Termios;
getstatic jtermios.JTermios.B9600:I
invokevirtual jtermios.windows.JTermiosImpl.cfsetispeed:(Ljtermios/Termios;I)I
pop
21: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Termios:Ljtermios/Termios;
getstatic jtermios.JTermios.B9600:I
invokevirtual jtermios.windows.JTermiosImpl.cfsetospeed:(Ljtermios/Termios;I)I
pop
22: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Termios:Ljtermios/Termios;
getfield jtermios.Termios.c_cc:[B
getstatic jtermios.JTermios.VTIME:I
iconst_0
bastore
23: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Termios:Ljtermios/Termios;
getfield jtermios.Termios.c_cc:[B
getstatic jtermios.JTermios.VMIN:I
iconst_0
bastore
24: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
aload 0
invokevirtual jtermios.windows.JTermiosImpl.updateFromTermios:(Ljtermios/windows/JTermiosImpl$Port;)I
pop
25: aload 0
aconst_null
iconst_0
iconst_0
aconst_null
invokestatic jtermios.windows.WinAPI.CreateEvent:(Ljtermios/windows/WinAPI$SECURITY_ATTRIBUTES;ZZLjava/lang/String;)Ljtermios/windows/WinAPI$HANDLE;
putfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
26: aload 0
getfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpne 28
27: aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.fail:()V
28: StackMap locals:
StackMap stack:
aload 0
aconst_null
iconst_1
iconst_0
aconst_null
invokestatic jtermios.windows.WinAPI.CreateEvent:(Ljtermios/windows/WinAPI$SECURITY_ATTRIBUTES;ZZLjava/lang/String;)Ljtermios/windows/WinAPI$HANDLE;
putfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
29: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpne 31
30: aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.fail:()V
31: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadWaitObjects:[Ljtermios/windows/WinAPI$HANDLE;
iconst_1
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
aastore
32: aload 0
aconst_null
iconst_1
iconst_0
aconst_null
invokestatic jtermios.windows.WinAPI.CreateEvent:(Ljtermios/windows/WinAPI$SECURITY_ATTRIBUTES;ZZLjava/lang/String;)Ljtermios/windows/WinAPI$HANDLE;
putfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
33: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpne 35
34: aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.fail:()V
35: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteWaitObjects:[Ljtermios/windows/WinAPI$HANDLE;
iconst_1
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
aastore
36: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_RdOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
ldc "hEvent"
aconst_null
iconst_1
iconst_0
aconst_null
invokestatic jtermios.windows.WinAPI.CreateEvent:(Ljtermios/windows/WinAPI$SECURITY_ATTRIBUTES;ZZLjava/lang/String;)Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$OVERLAPPED.writeField:(Ljava/lang/String;Ljava/lang/Object;)V
37: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_RdOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
getfield jtermios.windows.WinAPI$OVERLAPPED.hEvent:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpne 39
38: aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.fail:()V
39: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WrOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
ldc "hEvent"
aconst_null
iconst_1
iconst_0
aconst_null
invokestatic jtermios.windows.WinAPI.CreateEvent:(Ljtermios/windows/WinAPI$SECURITY_ATTRIBUTES;ZZLjava/lang/String;)Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$OVERLAPPED.writeField:(Ljava/lang/String;Ljava/lang/Object;)V
40: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WrOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
getfield jtermios.windows.WinAPI$OVERLAPPED.hEvent:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpne 42
41: aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.fail:()V
42: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_SelOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
ldc "hEvent"
aconst_null
iconst_1
iconst_0
aconst_null
invokestatic jtermios.windows.WinAPI.CreateEvent:(Ljtermios/windows/WinAPI$SECURITY_ATTRIBUTES;ZZLjava/lang/String;)Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$OVERLAPPED.writeField:(Ljava/lang/String;Ljava/lang/Object;)V
43: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_SelOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
getfield jtermios.windows.WinAPI$OVERLAPPED.hEvent:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpne 45
44: aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.fail:()V
45: StackMap locals:
StackMap stack:
aload 3
monitorexit
46: return
47: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
48: iload 4
aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
getfield jtermios.windows.JTermiosImpl.m_PortFDs:[Z
arraylength
if_icmplt 4
end local 4 49: new java.lang.RuntimeException
dup
ldc "Too many ports open"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
50: StackMap locals: jtermios.windows.JTermiosImpl$Port java.lang.String int jtermios.windows.JTermiosImpl
StackMap stack: java.lang.Throwable
aload 3
monitorexit
51: athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Ljtermios/windows/JTermiosImpl$Port;
0 52 1 filename Ljava/lang/String;
0 52 2 flags I
3 49 4 i I
Exception table:
from to target type
1 46 50 any
47 51 50 any
Exceptions:
throws jtermios.windows.JTermiosImpl$Fail
MethodParameters:
Name Flags
filename
flags
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
dup
astore 1
monitorenter
1: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_FD:I
iflt 5
2: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
getfield jtermios.windows.JTermiosImpl.m_OpenPorts:Ljava/util/Hashtable;
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_FD:I
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java.util.Hashtable.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
3: aload 0
getfield jtermios.windows.JTermiosImpl$Port.this$0:Ljtermios/windows/JTermiosImpl;
getfield jtermios.windows.JTermiosImpl.m_PortFDs:[Z
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_FD:I
iconst_0
bastore
4: aload 0
iconst_m1
putfield jtermios.windows.JTermiosImpl$Port.m_FD:I
5: StackMap locals: jtermios.windows.JTermiosImpl
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
ifnull 7
6: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
invokestatic jtermios.windows.WinAPI.SetEvent:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
7: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_RdBuffer:Lcom/sun/jna/Memory;
dup
astore 3
monitorenter
8: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_RdOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
ldc "hEvent"
invokevirtual jtermios.windows.WinAPI$OVERLAPPED.readField:(Ljava/lang/String;)Ljava/lang/Object;
checkcast jtermios.windows.WinAPI$HANDLE
astore 2
start local 2 9: aload 0
aconst_null
putfield jtermios.windows.JTermiosImpl$Port.m_RdOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
10: aload 2
ifnull 12
aload 2
getstatic jtermios.windows.WinAPI.NULL:Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$HANDLE.equals:(Ljava/lang/Object;)Z
ifne 12
aload 2
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$HANDLE.equals:(Ljava/lang/Object;)Z
ifne 12
11: aload 2
invokestatic jtermios.windows.WinAPI.CloseHandle:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
12: StackMap locals: jtermios.windows.WinAPI$HANDLE com.sun.jna.Memory
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
ifnull 14
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.NULL:Ljtermios/windows/WinAPI$HANDLE;
if_acmpeq 14
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpeq 14
13: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
invokestatic jtermios.windows.WinAPI.CloseHandle:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
14: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
15: aload 3
monitorexit
16: goto 19
end local 2 StackMap locals: jtermios.windows.JTermiosImpl$Port jtermios.windows.JTermiosImpl top com.sun.jna.Memory
StackMap stack: java.lang.Throwable
17: aload 3
monitorexit
18: athrow
start local 2 19: StackMap locals: jtermios.windows.JTermiosImpl$Port jtermios.windows.JTermiosImpl jtermios.windows.WinAPI$HANDLE
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
ifnull 21
20: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
invokestatic jtermios.windows.WinAPI.SetEvent:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
21: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WrBuffer:Lcom/sun/jna/Memory;
dup
astore 3
monitorenter
22: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WrOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
ldc "hEvent"
invokevirtual jtermios.windows.WinAPI$OVERLAPPED.readField:(Ljava/lang/String;)Ljava/lang/Object;
checkcast jtermios.windows.WinAPI$HANDLE
astore 2
23: aload 0
aconst_null
putfield jtermios.windows.JTermiosImpl$Port.m_WrOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
24: aload 2
ifnull 26
aload 2
getstatic jtermios.windows.WinAPI.NULL:Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$HANDLE.equals:(Ljava/lang/Object;)Z
ifne 26
aload 2
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$HANDLE.equals:(Ljava/lang/Object;)Z
ifne 26
25: aload 2
invokestatic jtermios.windows.WinAPI.CloseHandle:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
26: StackMap locals: com.sun.jna.Memory
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
ifnull 28
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.NULL:Ljtermios/windows/WinAPI$HANDLE;
if_acmpeq 28
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpeq 28
27: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_WriteCancelObject:Ljtermios/windows/WinAPI$HANDLE;
invokestatic jtermios.windows.WinAPI.CloseHandle:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
28: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield jtermios.windows.JTermiosImpl$Port.m_ReadCancelObject:Ljtermios/windows/WinAPI$HANDLE;
29: aload 3
monitorexit
30: goto 33
StackMap locals:
StackMap stack: java.lang.Throwable
31: aload 3
monitorexit
32: athrow
33: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
ifnull 35
34: aload 0
getfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
invokestatic jtermios.windows.WinAPI.SetEvent:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
35: StackMap locals:
StackMap stack:
aload 0
invokevirtual jtermios.windows.JTermiosImpl$Port.waitUnlock:()V
36: aload 0
getfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
ifnull 38
aload 0
getfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.NULL:Ljtermios/windows/WinAPI$HANDLE;
if_acmpeq 38
aload 0
getfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpeq 38
37: aload 0
getfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
invokestatic jtermios.windows.WinAPI.CloseHandle:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
38: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield jtermios.windows.JTermiosImpl$Port.WaitCommEventCancelObject:Ljtermios/windows/WinAPI$HANDLE;
39: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_SelOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
ldc "hEvent"
invokevirtual jtermios.windows.WinAPI$OVERLAPPED.readField:(Ljava/lang/String;)Ljava/lang/Object;
checkcast jtermios.windows.WinAPI$HANDLE
astore 2
40: aload 0
aconst_null
putfield jtermios.windows.JTermiosImpl$Port.m_SelOVL:Ljtermios/windows/WinAPI$OVERLAPPED;
41: aload 2
ifnull 43
aload 2
getstatic jtermios.windows.WinAPI.NULL:Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$HANDLE.equals:(Ljava/lang/Object;)Z
ifne 43
aload 2
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
invokevirtual jtermios.windows.WinAPI$HANDLE.equals:(Ljava/lang/Object;)Z
ifne 43
42: aload 2
invokestatic jtermios.windows.WinAPI.CloseHandle:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
43: StackMap locals:
StackMap stack:
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Comm:Ljtermios/windows/WinAPI$HANDLE;
ifnull 45
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Comm:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.NULL:Ljtermios/windows/WinAPI$HANDLE;
if_acmpeq 45
aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Comm:Ljtermios/windows/WinAPI$HANDLE;
getstatic jtermios.windows.WinAPI.INVALID_HANDLE_VALUE:Ljtermios/windows/WinAPI$HANDLE;
if_acmpeq 45
44: aload 0
getfield jtermios.windows.JTermiosImpl$Port.m_Comm:Ljtermios/windows/WinAPI$HANDLE;
invokestatic jtermios.windows.WinAPI.CloseHandle:(Ljtermios/windows/WinAPI$HANDLE;)Z
pop
45: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield jtermios.windows.JTermiosImpl$Port.m_Comm:Ljtermios/windows/WinAPI$HANDLE;
end local 2 46: aload 1
monitorexit
47: goto 50
StackMap locals: jtermios.windows.JTermiosImpl$Port jtermios.windows.JTermiosImpl
StackMap stack: java.lang.Throwable
48: aload 1
monitorexit
49: athrow
50: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 51 0 this Ljtermios/windows/JTermiosImpl$Port;
9 17 2 h Ljtermios/windows/WinAPI$HANDLE;
19 46 2 h Ljtermios/windows/WinAPI$HANDLE;
Exception table:
from to target type
8 16 17 any
17 18 17 any
22 30 31 any
31 32 31 any
1 47 48 any
48 49 48 any
}
SourceFile: "JTermiosImpl.java"
NestHost: jtermios.windows.JTermiosImpl
InnerClasses:
public JTermiosLogging = jtermios.JTermios$JTermiosLogging of jtermios.JTermios
Fail = jtermios.windows.JTermiosImpl$Fail of jtermios.windows.JTermiosImpl
private Port = jtermios.windows.JTermiosImpl$Port of jtermios.windows.JTermiosImpl
public COMMTIMEOUTS = jtermios.windows.WinAPI$COMMTIMEOUTS of jtermios.windows.WinAPI
public COMSTAT = jtermios.windows.WinAPI$COMSTAT of jtermios.windows.WinAPI
public DCB = jtermios.windows.WinAPI$DCB of jtermios.windows.WinAPI
public HANDLE = jtermios.windows.WinAPI$HANDLE of jtermios.windows.WinAPI
public OVERLAPPED = jtermios.windows.WinAPI$OVERLAPPED of jtermios.windows.WinAPI
public SECURITY_ATTRIBUTES = jtermios.windows.WinAPI$SECURITY_ATTRIBUTES of jtermios.windows.WinAPI