public class com.sun.tools.sjavac.client.SjavacClient implements com.sun.tools.sjavac.server.Sjavac
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.sun.tools.sjavac.client.SjavacClient
super_class: java.lang.Object
{
private final java.lang.String id;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.sun.tools.sjavac.server.PortFile portFile;
descriptor: Lcom/sun/tools/sjavac/server/PortFile;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int keepalive;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int poolsize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String sjavacForkCmd;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static int CONNECTION_TIMEOUT;
descriptor: I
flags: (0x0008) ACC_STATIC
static int MAX_CONNECT_ATTEMPTS;
descriptor: I
flags: (0x0008) ACC_STATIC
static int WAIT_BETWEEN_CONNECT_ATTEMPTS;
descriptor: I
flags: (0x0008) ACC_STATIC
private final java.lang.String settings;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: sipush 2000
putstatic com.sun.tools.sjavac.client.SjavacClient.CONNECTION_TIMEOUT:I
1: iconst_3
putstatic com.sun.tools.sjavac.client.SjavacClient.MAX_CONNECT_ATTEMPTS:I
2: sipush 2000
putstatic com.sun.tools.sjavac.client.SjavacClient.WAIT_BETWEEN_CONNECT_ATTEMPTS:I
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(com.sun.tools.sjavac.options.Options);
descriptor: (Lcom/sun/tools/sjavac/options/Options;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=8, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 1
invokevirtual com.sun.tools.sjavac.options.Options.getServerConf:()Ljava/lang/String;
astore 2
start local 2 2: aload 2
ifnull 3
aload 2
goto 4
StackMap locals: com.sun.tools.sjavac.client.SjavacClient com.sun.tools.sjavac.options.Options java.lang.String
StackMap stack:
3: ldc ""
StackMap locals:
StackMap stack: java.lang.String
4: astore 3
start local 3 5: ldc "id"
aload 3
invokestatic com.sun.tools.sjavac.Util.extractStringOption:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 6: aload 0
aload 4
ifnull 7
aload 4
goto 8
StackMap locals: com.sun.tools.sjavac.client.SjavacClient com.sun.tools.sjavac.options.Options java.lang.String java.lang.String java.lang.String
StackMap stack: com.sun.tools.sjavac.client.SjavacClient
7: new java.lang.StringBuilder
dup
ldc "id"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
new java.util.Random
dup
invokespecial java.util.Random.<init>:()V
invokevirtual java.util.Random.nextLong:()J
ldc 9223372036854775807
land
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
StackMap locals: com.sun.tools.sjavac.client.SjavacClient com.sun.tools.sjavac.options.Options java.lang.String java.lang.String java.lang.String
StackMap stack: com.sun.tools.sjavac.client.SjavacClient java.lang.String
8: putfield com.sun.tools.sjavac.client.SjavacClient.id:Ljava/lang/String;
9: aload 1
invokevirtual com.sun.tools.sjavac.options.Options.getDestDir:()Ljava/nio/file/Path;
10: ldc "javac_server"
invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
11: invokeinterface java.nio.file.Path.toAbsolutePath:()Ljava/nio/file/Path;
12: invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
13: astore 5
start local 5 14: ldc "portfile"
aload 3
aload 5
invokestatic com.sun.tools.sjavac.Util.extractStringOption:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 6
start local 6 15: aload 0
aload 6
invokestatic com.sun.tools.sjavac.server.SjavacServer.getPortFile:(Ljava/lang/String;)Lcom/sun/tools/sjavac/server/PortFile;
putfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
16: aload 0
ldc "sjavac"
aload 3
ldc "sjavac"
invokestatic com.sun.tools.sjavac.Util.extractStringOption:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
putfield com.sun.tools.sjavac.client.SjavacClient.sjavacForkCmd:Ljava/lang/String;
17: ldc "poolsize"
aload 3
invokestatic com.sun.tools.sjavac.Util.extractIntOption:(Ljava/lang/String;Ljava/lang/String;)I
istore 7
start local 7 18: aload 0
ldc "keepalive"
aload 3
bipush 120
invokestatic com.sun.tools.sjavac.Util.extractIntOption:(Ljava/lang/String;Ljava/lang/String;I)I
putfield com.sun.tools.sjavac.client.SjavacClient.keepalive:I
19: aload 0
iload 7
ifle 20
iload 7
goto 21
StackMap locals: com.sun.tools.sjavac.client.SjavacClient com.sun.tools.sjavac.options.Options java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String int
StackMap stack: com.sun.tools.sjavac.client.SjavacClient
20: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
StackMap locals: com.sun.tools.sjavac.client.SjavacClient com.sun.tools.sjavac.options.Options java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String int
StackMap stack: com.sun.tools.sjavac.client.SjavacClient int
21: putfield com.sun.tools.sjavac.client.SjavacClient.poolsize:I
22: aload 0
aload 3
ldc ""
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 23
new java.lang.StringBuilder
dup
ldc "id="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.id:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ",portfile="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
goto 24
StackMap locals:
StackMap stack: com.sun.tools.sjavac.client.SjavacClient
23: aload 3
StackMap locals: com.sun.tools.sjavac.client.SjavacClient com.sun.tools.sjavac.options.Options java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String int
StackMap stack: com.sun.tools.sjavac.client.SjavacClient java.lang.String
24: putfield com.sun.tools.sjavac.client.SjavacClient.settings:Ljava/lang/String;
25: return
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
0 26 1 options Lcom/sun/tools/sjavac/options/Options;
2 26 2 tmpServerConf Ljava/lang/String;
5 26 3 serverConf Ljava/lang/String;
6 26 4 tmpId Ljava/lang/String;
14 26 5 defaultPortfile Ljava/lang/String;
15 26 6 portfileName Ljava/lang/String;
18 26 7 poolsize I
MethodParameters:
Name Flags
options
public java.lang.String serverSettings();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.settings:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
public com.sun.tools.javac.main.Main$Result compile(java.lang.String[]);
descriptor: ([Ljava/lang/String;)Lcom/sun/tools/javac/main/Main$Result;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=12, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aconst_null
astore 3
aconst_null
astore 4
2: aload 0
invokevirtual com.sun.tools.sjavac.client.SjavacClient.tryConnect:()Ljava/net/Socket;
astore 5
start local 5 3: new java.io.PrintWriter
dup
new java.io.OutputStreamWriter
dup
aload 5
invokevirtual java.net.Socket.getOutputStream:()Ljava/io/OutputStream;
invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;)V
invokespecial java.io.PrintWriter.<init>:(Ljava/io/Writer;)V
astore 6
start local 6 4: new java.io.BufferedReader
dup
new java.io.InputStreamReader
dup
aload 5
invokevirtual java.net.Socket.getInputStream:()Ljava/io/InputStream;
invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
astore 7
start local 7 5: aload 6
aload 1
arraylength
invokevirtual java.io.PrintWriter.println:(I)V
6: aload 1
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 10
StackMap locals: com.sun.tools.sjavac.client.SjavacClient java.lang.String[] com.sun.tools.javac.main.Main$Result java.lang.Throwable java.lang.Throwable java.net.Socket java.io.PrintWriter java.io.BufferedReader top int int java.lang.String[]
StackMap stack:
7: aload 11
iload 9
aaload
astore 8
start local 8 8: aload 6
aload 8
invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
end local 8 9: iinc 9 1
StackMap locals:
StackMap stack:
10: iload 9
iload 10
if_icmplt 7
11: aload 6
invokevirtual java.io.PrintWriter.flush:()V
12: goto 25
start local 8 13: StackMap locals: com.sun.tools.sjavac.client.SjavacClient java.lang.String[] com.sun.tools.javac.main.Main$Result java.lang.Throwable java.lang.Throwable java.net.Socket java.io.PrintWriter java.io.BufferedReader java.lang.String
StackMap stack:
aload 8
ldc ":"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifne 15
14: new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Could not parse protocol line: >>\""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\"<<"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
15: StackMap locals:
StackMap stack:
aload 8
ldc ":"
iconst_2
invokevirtual java.lang.String.split:(Ljava/lang/String;I)[Ljava/lang/String;
astore 9
start local 9 16: aload 9
iconst_0
aaload
astore 10
start local 10 17: aload 9
iconst_1
aaload
astore 11
start local 11 18: invokestatic com.sun.tools.sjavac.Log.isDebugging:()Z
ifeq 20
19: new java.lang.StringBuilder
dup
ldc "[sjavac-server] "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 11
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 11
20: StackMap locals: java.lang.String[] java.lang.String java.lang.String
StackMap stack:
aload 10
invokestatic com.sun.tools.sjavac.Log$Level.valueOf:(Ljava/lang/String;)Lcom/sun/tools/sjavac/Log$Level;
aload 11
invokestatic com.sun.tools.sjavac.Log.log:(Lcom/sun/tools/sjavac/Log$Level;Ljava/lang/String;)V
21: goto 25
22: StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
pop
23: aload 10
ldc "RC"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 25
24: aload 11
invokestatic com.sun.tools.javac.main.Main$Result.valueOf:(Ljava/lang/String;)Lcom/sun/tools/javac/main/Main$Result;
astore 2
end local 11 end local 10 end local 9 end local 8 25: StackMap locals: com.sun.tools.sjavac.client.SjavacClient java.lang.String[] com.sun.tools.javac.main.Main$Result java.lang.Throwable java.lang.Throwable java.net.Socket java.io.PrintWriter java.io.BufferedReader
StackMap stack:
aload 7
invokevirtual java.io.BufferedReader.readLine:()Ljava/lang/String;
dup
astore 8
start local 8 26: ifnonnull 13
end local 8 end local 7 end local 6 27: aload 5
ifnull 46
aload 5
invokevirtual java.net.Socket.close:()V
goto 46
StackMap locals: com.sun.tools.sjavac.client.SjavacClient java.lang.String[] com.sun.tools.javac.main.Main$Result java.lang.Throwable java.lang.Throwable java.net.Socket
StackMap stack: java.lang.Throwable
28: astore 3
aload 5
ifnull 29
aload 5
invokevirtual java.net.Socket.close:()V
end local 5 StackMap locals:
StackMap stack:
29: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
30: astore 4
aload 3
ifnonnull 31
aload 4
astore 3
goto 32
StackMap locals:
StackMap stack:
31: aload 3
aload 4
if_acmpeq 32
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
32: aload 3
athrow
StackMap locals: com.sun.tools.sjavac.client.SjavacClient java.lang.String[] com.sun.tools.javac.main.Main$Result
StackMap stack: com.sun.tools.sjavac.client.PortFileInaccessibleException
33: pop
34: ldc "Port file inaccessible."
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
35: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
astore 2
goto 46
36: StackMap locals:
StackMap stack: java.io.IOException
astore 3
start local 3 37: new java.lang.StringBuilder
dup
ldc "IOException caught during compilation: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
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.error:(Ljava/lang/String;)V
38: aload 3
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/Throwable;)V
39: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
astore 2
end local 3 40: goto 46
41: StackMap locals:
StackMap stack: java.lang.InterruptedException
astore 3
start local 3 42: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
43: ldc "Compilation interrupted."
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
44: aload 3
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/Throwable;)V
45: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
astore 2
end local 3 46: StackMap locals:
StackMap stack:
aload 2
ifnonnull 48
47: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
astore 2
48: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 49 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
0 49 1 args [Ljava/lang/String;
1 49 2 result Lcom/sun/tools/javac/main/Main$Result;
3 29 5 socket Ljava/net/Socket;
4 27 6 out Ljava/io/PrintWriter;
5 27 7 in Ljava/io/BufferedReader;
8 9 8 arg Ljava/lang/String;
13 25 8 line Ljava/lang/String;
26 27 8 line Ljava/lang/String;
16 25 9 typeAndContent [Ljava/lang/String;
17 25 10 type Ljava/lang/String;
18 25 11 content Ljava/lang/String;
37 40 3 ioe Ljava/io/IOException;
42 46 3 ie Ljava/lang/InterruptedException;
Exception table:
from to target type
18 21 22 Class java.lang.IllegalArgumentException
3 27 28 any
2 30 30 any
1 33 33 Class com.sun.tools.sjavac.client.PortFileInaccessibleException
1 33 36 Class java.io.IOException
1 33 41 Class java.lang.InterruptedException
MethodParameters:
Name Flags
args
private java.net.Socket tryConnect();
descriptor: ()Ljava/net/Socket;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.client.SjavacClient.makeSureServerIsRunning:(Lcom/sun/tools/sjavac/server/PortFile;)V
1: iconst_0
istore 1
start local 1 2: StackMap locals: int
StackMap stack:
new java.lang.StringBuilder
dup
ldc "Trying to connect. Attempt "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iinc 1 1
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " of "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic com.sun.tools.sjavac.client.SjavacClient.MAX_CONNECT_ATTEMPTS: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
3: aload 0
invokevirtual com.sun.tools.sjavac.client.SjavacClient.makeConnectionAttempt:()Ljava/net/Socket;
4: areturn
5: StackMap locals:
StackMap stack: java.io.IOException
astore 2
start local 2 6: new java.lang.StringBuilder
dup
ldc "Connection attempt failed: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
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.error:(Ljava/lang/String;)V
7: iload 1
getstatic com.sun.tools.sjavac.client.SjavacClient.MAX_CONNECT_ATTEMPTS:I
if_icmplt 10
8: ldc "Giving up"
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
9: new java.io.IOException
dup
ldc "Could not connect to server"
aload 2
invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 10: StackMap locals:
StackMap stack:
getstatic com.sun.tools.sjavac.client.SjavacClient.WAIT_BETWEEN_CONNECT_ATTEMPTS:I
i2l
invokestatic java.lang.Thread.sleep:(J)V
11: goto 2
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
2 12 1 attempt I
6 10 2 ex Ljava/io/IOException;
Exception table:
from to target type
3 4 5 Class java.io.IOException
Exceptions:
throws java.io.IOException, java.lang.InterruptedException
private java.net.Socket makeConnectionAttempt();
descriptor: ()Ljava/net/Socket;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=1
start local 0 0: new java.net.Socket
dup
invokespecial java.net.Socket.<init>:()V
astore 1
start local 1 1: aconst_null
invokestatic java.net.InetAddress.getByName:(Ljava/lang/String;)Ljava/net/InetAddress;
astore 2
start local 2 2: new java.net.InetSocketAddress
dup
aload 2
aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.getPort:()I
invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
astore 3
start local 3 3: aload 1
aload 3
getstatic com.sun.tools.sjavac.client.SjavacClient.CONNECTION_TIMEOUT:I
invokevirtual java.net.Socket.connect:(Ljava/net/SocketAddress;I)V
4: ldc "Connected"
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/String;)V
5: aload 1
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
1 6 1 socket Ljava/net/Socket;
2 6 2 localhost Ljava/net/InetAddress;
3 6 3 address Ljava/net/InetSocketAddress;
Exceptions:
throws java.io.IOException
private void makeSureServerIsRunning(com.sun.tools.sjavac.server.PortFile);
descriptor: (Lcom/sun/tools/sjavac/server/PortFile;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual com.sun.tools.sjavac.server.PortFile.exists:()Z
ifeq 6
1: aload 1
invokevirtual com.sun.tools.sjavac.server.PortFile.lock:()V
2: aload 1
invokevirtual com.sun.tools.sjavac.server.PortFile.getValues:()V
3: aload 1
invokevirtual com.sun.tools.sjavac.server.PortFile.unlock:()V
4: aload 1
invokevirtual com.sun.tools.sjavac.server.PortFile.containsPortInfo:()Z
ifeq 6
5: return
6: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.sjavacForkCmd:Ljava/lang/String;
7: aload 1
8: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.poolsize:I
9: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.keepalive:I
10: invokestatic com.sun.tools.sjavac.client.SjavacClient.fork:(Ljava/lang/String;Lcom/sun/tools/sjavac/server/PortFile;II)V
11: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
0 12 1 portFile Lcom/sun/tools/sjavac/server/PortFile;
Exceptions:
throws java.io.IOException, java.lang.InterruptedException
MethodParameters:
Name Flags
portFile
public void shutdown();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
public static void fork(java.lang.String, com.sun.tools.sjavac.server.PortFile, int, int);
descriptor: (Ljava/lang/String;Lcom/sun/tools/sjavac/server/PortFile;II)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=11, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 4
start local 4 1: aload 4
aload 0
invokestatic com.sun.tools.sjavac.options.OptionHelper.unescapeCmdArg:(Ljava/lang/String;)Ljava/lang/String;
ldc " "
invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
pop
2: aload 4
new java.lang.StringBuilder
dup
ldc "--startserver:portfile="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
3: aload 1
invokevirtual com.sun.tools.sjavac.server.PortFile.getFilename:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: ldc ",poolsize="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
5: ldc ",keepalive="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
7: new java.lang.StringBuilder
dup
ldc "Starting server. Command: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " "
aload 4
invokestatic java.lang.String.join:(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
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
8: new java.lang.ProcessBuilder
dup
aload 4
invokespecial java.lang.ProcessBuilder.<init>:(Ljava/util/List;)V
9: iconst_1
invokevirtual java.lang.ProcessBuilder.redirectErrorStream:(Z)Ljava/lang/ProcessBuilder;
10: invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
11: astore 5
start local 5 12: goto 17
end local 5 StackMap locals: java.lang.String com.sun.tools.sjavac.server.PortFile int int java.util.List
StackMap stack: java.io.IOException
13: astore 6
start local 6 14: new java.lang.StringBuilder
dup
ldc "Failed to create server process: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
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.error:(Ljava/lang/String;)V
15: aload 6
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/Throwable;)V
16: new java.io.IOException
dup
aload 6
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 6 start local 5 17: StackMap locals: java.lang.Process
StackMap stack:
aload 1
invokevirtual com.sun.tools.sjavac.server.PortFile.waitForValidValues:()V
18: goto 37
StackMap locals:
StackMap stack: java.io.IOException
19: astore 6
start local 6 20: new java.lang.StringBuilder
dup
ldc "Sjavac server failed to initialize: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
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.error:(Ljava/lang/String;)V
21: ldc "Process output:"
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
22: new java.io.InputStreamReader
dup
aload 5
invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
astore 7
start local 7 23: aconst_null
astore 8
aconst_null
astore 9
24: new java.io.BufferedReader
dup
aload 7
invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
astore 10
start local 10 25: aload 10
invokevirtual java.io.BufferedReader.lines:()Ljava/util/stream/Stream;
invokedynamic accept()Ljava/util/function/Consumer;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
com/sun/tools/sjavac/Log.error(Ljava/lang/String;)V (6)
(Ljava/lang/String;)V
invokeinterface java.util.stream.Stream.forEach:(Ljava/util/function/Consumer;)V
26: aload 10
ifnull 32
aload 10
invokevirtual java.io.BufferedReader.close:()V
goto 32
StackMap locals: java.lang.String com.sun.tools.sjavac.server.PortFile int int java.util.List java.lang.Process java.io.IOException java.io.Reader java.lang.Throwable java.lang.Throwable java.io.BufferedReader
StackMap stack: java.lang.Throwable
27: astore 8
aload 10
ifnull 28
aload 10
invokevirtual java.io.BufferedReader.close:()V
end local 10 StackMap locals:
StackMap stack:
28: aload 8
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
29: astore 9
aload 8
ifnonnull 30
aload 9
astore 8
goto 31
StackMap locals:
StackMap stack:
30: aload 8
aload 9
if_acmpeq 31
aload 8
aload 9
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
31: aload 8
athrow
32: StackMap locals:
StackMap stack:
ldc "<End of process output>"
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
33: new java.lang.StringBuilder
dup
ldc "Process exit code: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.lang.Process.exitValue:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
34: goto 36
StackMap locals:
StackMap stack: java.lang.IllegalThreadStateException
35: pop
36: StackMap locals:
StackMap stack:
new java.io.IOException
dup
new java.lang.StringBuilder
dup
ldc "Server failed to initialize: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 6
invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 end local 6 37: StackMap locals:
StackMap stack:
return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 sjavacCmd Ljava/lang/String;
0 38 1 portFile Lcom/sun/tools/sjavac/server/PortFile;
0 38 2 poolsize I
0 38 3 keepalive I
1 38 4 cmd Ljava/util/List<Ljava/lang/String;>;
12 13 5 serverProcess Ljava/lang/Process;
17 38 5 serverProcess Ljava/lang/Process;
14 17 6 ex Ljava/io/IOException;
20 37 6 ex Ljava/io/IOException;
23 37 7 serverStdoutStderr Ljava/io/Reader;
25 28 10 br Ljava/io/BufferedReader;
Exception table:
from to target type
8 12 13 Class java.io.IOException
17 18 19 Class java.io.IOException
25 26 27 any
24 29 29 any
33 34 35 Class java.lang.IllegalThreadStateException
Exceptions:
throws java.io.IOException, java.lang.InterruptedException
MethodParameters:
Name Flags
sjavacCmd
portFile
poolsize
keepalive
}
SourceFile: "SjavacClient.java"
InnerClasses:
public final Result = com.sun.tools.javac.main.Main$Result of com.sun.tools.javac.main.Main
public final Level = com.sun.tools.sjavac.Log$Level of com.sun.tools.sjavac.Log
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles