public class com.sun.tools.sjavac.server.SjavacServer implements com.sun.tools.sjavac.server.Terminable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.sun.tools.sjavac.server.SjavacServer
super_class: java.lang.Object
{
public static final java.lang.String LINE_TYPE_RC;
descriptor: Ljava/lang/String;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: "RC"
private final java.lang.String portfilename;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int poolsize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int keepalive;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final long myCookie;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private long totalBuildTime;
descriptor: J
flags: (0x0002) ACC_PRIVATE
com.sun.tools.sjavac.server.Sjavac sjavac;
descriptor: Lcom/sun/tools/sjavac/server/Sjavac;
flags: (0x0000)
private java.net.ServerSocket serverSocket;
descriptor: Ljava/net/ServerSocket;
flags: (0x0002) ACC_PRIVATE
private com.sun.tools.sjavac.server.PortFile portFile;
descriptor: Lcom/sun/tools/sjavac/server/PortFile;
flags: (0x0002) ACC_PRIVATE
private com.sun.tools.sjavac.server.PortFileMonitor portFileMonitor;
descriptor: Lcom/sun/tools/sjavac/server/PortFileMonitor;
flags: (0x0002) ACC_PRIVATE
final java.util.concurrent.atomic.AtomicBoolean keepAcceptingRequests;
descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
flags: (0x0010) ACC_FINAL
private static java.util.Map<java.lang.String, com.sun.tools.sjavac.server.PortFile> allPortFiles;
descriptor: Ljava/util/Map;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Ljava/util/Map<Ljava/lang/String;Lcom/sun/tools/sjavac/server/PortFile;>;
public void <init>(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=2, args_size=2
start local 0 start local 1 0: aload 0
ldc "portfile"
aload 1
invokestatic com.sun.tools.sjavac.Util.extractStringOption:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
1: ldc "poolsize"
aload 1
invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
invokestatic com.sun.tools.sjavac.Util.extractIntOption:(Ljava/lang/String;Ljava/lang/String;I)I
2: ldc "keepalive"
aload 1
bipush 120
invokestatic com.sun.tools.sjavac.Util.extractIntOption:(Ljava/lang/String;Ljava/lang/String;I)I
invokespecial com.sun.tools.sjavac.server.SjavacServer.<init>:(Ljava/lang/String;II)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/sun/tools/sjavac/server/SjavacServer;
0 4 1 settings Ljava/lang/String;
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
settings
public void <init>(java.lang.String, int, int);
descriptor: (Ljava/lang/String;II)V
flags: (0x0001) ACC_PUBLIC
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.lang.Object.<init>:()V
1: aload 0
new java.util.concurrent.atomic.AtomicBoolean
dup
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
putfield com.sun.tools.sjavac.server.SjavacServer.keepAcceptingRequests:Ljava/util/concurrent/atomic/AtomicBoolean;
2: aload 0
aload 1
putfield com.sun.tools.sjavac.server.SjavacServer.portfilename:Ljava/lang/String;
3: aload 0
iload 2
putfield com.sun.tools.sjavac.server.SjavacServer.poolsize:I
4: aload 0
iload 3
putfield com.sun.tools.sjavac.server.SjavacServer.keepalive:I
5: aload 0
new java.util.Random
dup
invokespecial java.util.Random.<init>:()V
invokevirtual java.util.Random.nextLong:()J
putfield com.sun.tools.sjavac.server.SjavacServer.myCookie:J
6: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/sun/tools/sjavac/server/SjavacServer;
0 7 1 portfilename Ljava/lang/String;
0 7 2 poolsize I
0 7 3 keepalive I
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
portfilename
poolsize
keepalive
public static synchronized com.sun.tools.sjavac.server.PortFile getPortFile(java.lang.String);
descriptor: (Ljava/lang/String;)Lcom/sun/tools/sjavac/server/PortFile;
flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=3, args_size=1
start local 0 0: getstatic com.sun.tools.sjavac.server.SjavacServer.allPortFiles:Ljava/util/Map;
ifnonnull 2
1: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putstatic com.sun.tools.sjavac.server.SjavacServer.allPortFiles:Ljava/util/Map;
2: StackMap locals:
StackMap stack:
getstatic com.sun.tools.sjavac.server.SjavacServer.allPortFiles:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.sun.tools.sjavac.server.PortFile
astore 1
start local 1 3: aload 1
ifnull 9
4: aload 1
invokevirtual com.sun.tools.sjavac.server.PortFile.exists:()Z
ifne 9
5: aconst_null
astore 1
6: goto 9
StackMap locals: java.lang.String com.sun.tools.sjavac.server.PortFile
StackMap stack: java.io.IOException
7: astore 2
start local 2 8: aload 2
invokevirtual java.io.IOException.printStackTrace:()V
end local 2 9: StackMap locals:
StackMap stack:
aload 1
ifnonnull 12
10: new com.sun.tools.sjavac.server.PortFile
dup
aload 0
invokespecial com.sun.tools.sjavac.server.PortFile.<init>:(Ljava/lang/String;)V
astore 1
11: getstatic com.sun.tools.sjavac.server.SjavacServer.allPortFiles:Ljava/util/Map;
aload 0
aload 1
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
12: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 filename Ljava/lang/String;
3 13 1 pf Lcom/sun/tools/sjavac/server/PortFile;
8 9 2 ioex Ljava/io/IOException;
Exception table:
from to target type
4 6 7 Class java.io.IOException
MethodParameters:
Name Flags
filename
long getCookie();
descriptor: ()J
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.myCookie:J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/tools/sjavac/server/SjavacServer;
int getPort();
descriptor: ()I
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.serverSocket:Ljava/net/ServerSocket;
invokevirtual java.net.ServerSocket.getLocalPort:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/tools/sjavac/server/SjavacServer;
public void addBuildTime(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 0
dup
getfield com.sun.tools.sjavac.server.SjavacServer.totalBuildTime:J
lload 1
ladd
putfield com.sun.tools.sjavac.server.SjavacServer.totalBuildTime:J
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/tools/sjavac/server/SjavacServer;
0 2 1 inc J
MethodParameters:
Name Flags
inc
public int startServer();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=5, args_size=1
start local 0 0: invokestatic java.lang.System.currentTimeMillis:()J
lstore 1
start local 1 1: aload 0
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portfilename:Ljava/lang/String;
invokestatic com.sun.tools.sjavac.server.SjavacServer.getPortFile:(Ljava/lang/String;)Lcom/sun/tools/sjavac/server/PortFile;
putfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
2: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
dup
astore 3
monitorenter
3: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.lock:()V
4: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.getValues:()V
5: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.containsPortInfo:()Z
ifeq 10
6: ldc "Javac server not started because portfile exists!"
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
7: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.unlock:()V
8: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
getfield com.sun.tools.javac.main.Main$Result.exitCode:I
aload 3
monitorexit
9: ireturn
10: StackMap locals: long com.sun.tools.sjavac.server.PortFile
StackMap stack:
aload 0
new com.sun.tools.sjavac.comp.SjavacImpl
dup
invokespecial com.sun.tools.sjavac.comp.SjavacImpl.<init>:()V
putfield com.sun.tools.sjavac.server.SjavacServer.sjavac:Lcom/sun/tools/sjavac/server/Sjavac;
11: aload 0
new com.sun.tools.sjavac.comp.PooledSjavac
dup
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.sjavac:Lcom/sun/tools/sjavac/server/Sjavac;
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.poolsize:I
invokespecial com.sun.tools.sjavac.comp.PooledSjavac.<init>:(Lcom/sun/tools/sjavac/server/Sjavac;I)V
putfield com.sun.tools.sjavac.server.SjavacServer.sjavac:Lcom/sun/tools/sjavac/server/Sjavac;
12: aload 0
new com.sun.tools.sjavac.server.IdleResetSjavac
dup
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.sjavac:Lcom/sun/tools/sjavac/server/Sjavac;
13: aload 0
14: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.keepalive:I
sipush 1000
imul
i2l
invokespecial com.sun.tools.sjavac.server.IdleResetSjavac.<init>:(Lcom/sun/tools/sjavac/server/Sjavac;Lcom/sun/tools/sjavac/server/Terminable;J)V
15: putfield com.sun.tools.sjavac.server.SjavacServer.sjavac:Lcom/sun/tools/sjavac/server/Sjavac;
16: aload 0
new java.net.ServerSocket
dup
invokespecial java.net.ServerSocket.<init>:()V
putfield com.sun.tools.sjavac.server.SjavacServer.serverSocket:Ljava/net/ServerSocket;
17: aconst_null
invokestatic java.net.InetAddress.getByName:(Ljava/lang/String;)Ljava/net/InetAddress;
astore 4
start local 4 18: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.serverSocket:Ljava/net/ServerSocket;
new java.net.InetSocketAddress
dup
aload 4
iconst_0
invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
invokevirtual java.net.ServerSocket.bind:(Ljava/net/SocketAddress;)V
19: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
aload 0
invokevirtual com.sun.tools.sjavac.server.SjavacServer.getPort:()I
aload 0
invokevirtual com.sun.tools.sjavac.server.SjavacServer.getCookie:()J
invokevirtual com.sun.tools.sjavac.server.PortFile.setValues:(IJ)V
20: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.unlock:()V
end local 4 21: aload 3
monitorexit
22: goto 25
StackMap locals:
StackMap stack: java.lang.Throwable
23: aload 3
monitorexit
24: athrow
25: StackMap locals:
StackMap stack:
aload 0
new com.sun.tools.sjavac.server.PortFileMonitor
dup
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
aload 0
invokespecial com.sun.tools.sjavac.server.PortFileMonitor.<init>:(Lcom/sun/tools/sjavac/server/PortFile;Lcom/sun/tools/sjavac/server/SjavacServer;)V
putfield com.sun.tools.sjavac.server.SjavacServer.portFileMonitor:Lcom/sun/tools/sjavac/server/PortFileMonitor;
26: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFileMonitor:Lcom/sun/tools/sjavac/server/PortFileMonitor;
invokevirtual com.sun.tools.sjavac.server.PortFileMonitor.start:()V
27: ldc "Sjavac server started. Accepting connections..."
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
28: new java.lang.StringBuilder
dup
ldc " port: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual com.sun.tools.sjavac.server.SjavacServer.getPort:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
29: new java.lang.StringBuilder
dup
ldc " time: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
30: new java.lang.StringBuilder
dup
ldc " poolsize: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.poolsize:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
31: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.keepAcceptingRequests:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
32: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.serverSocket:Ljava/net/ServerSocket;
invokevirtual java.net.ServerSocket.accept:()Ljava/net/Socket;
astore 3
start local 3 33: new com.sun.tools.sjavac.server.RequestHandler
dup
aload 3
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.sjavac:Lcom/sun/tools/sjavac/server/Sjavac;
invokespecial com.sun.tools.sjavac.server.RequestHandler.<init>:(Ljava/net/Socket;Lcom/sun/tools/sjavac/server/Sjavac;)V
invokevirtual com.sun.tools.sjavac.server.RequestHandler.start:()V
end local 3 34: goto 36
StackMap locals:
StackMap stack: java.net.SocketException
35: pop
36: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.keepAcceptingRequests:Ljava/util/concurrent/atomic/AtomicBoolean;
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifne 32
37: ldc "Shutting down."
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
38: invokestatic java.lang.System.currentTimeMillis:()J
lload 1
lsub
lstore 3
start local 3 39: new java.lang.StringBuilder
dup
ldc "Total wall clock time "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
lload 3
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "ms build time "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.totalBuildTime:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "ms"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
40: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.sjavac:Lcom/sun/tools/sjavac/server/Sjavac;
invokeinterface com.sun.tools.sjavac.server.Sjavac.shutdown:()V
41: getstatic com.sun.tools.javac.main.Main$Result.OK:Lcom/sun/tools/javac/main/Main$Result;
getfield com.sun.tools.javac.main.Main$Result.exitCode:I
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 42 0 this Lcom/sun/tools/sjavac/server/SjavacServer;
1 42 1 serverStart J
18 21 4 localhost Ljava/net/InetAddress;
33 34 3 socket Ljava/net/Socket;
39 42 3 realTime J
Exception table:
from to target type
3 9 23 any
10 22 23 any
23 24 23 any
32 34 35 Class java.net.SocketException
Exceptions:
throws java.io.IOException, java.lang.InterruptedException
public void shutdown(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.keepAcceptingRequests:Ljava/util/concurrent/atomic/AtomicBoolean;
iconst_1
iconst_0
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifne 2
1: return
2: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Quitting: "
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;
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
3: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFileMonitor:Lcom/sun/tools/sjavac/server/PortFileMonitor;
invokevirtual com.sun.tools.sjavac.server.PortFileMonitor.shutdown:()V
4: aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.delete:()V
5: goto 8
StackMap locals:
StackMap stack: java.lang.Exception
6: astore 2
start local 2 7: aload 2
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/Throwable;)V
end local 2 8: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.tools.sjavac.server.SjavacServer.serverSocket:Ljava/net/ServerSocket;
invokevirtual java.net.ServerSocket.close:()V
9: goto 12
StackMap locals:
StackMap stack: java.io.IOException
10: astore 2
start local 2 11: aload 2
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/Throwable;)V
end local 2 12: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/sun/tools/sjavac/server/SjavacServer;
0 13 1 quitMsg Ljava/lang/String;
7 8 2 e Ljava/lang/Exception;
11 12 2 e Ljava/io/IOException;
Exception table:
from to target type
4 5 6 Class java.io.IOException
4 5 6 Class java.lang.InterruptedException
8 9 10 Class java.io.IOException
MethodParameters:
Name Flags
quitMsg
}
SourceFile: "SjavacServer.java"
InnerClasses:
public final Result = com.sun.tools.javac.main.Main$Result of com.sun.tools.javac.main.Main