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 com.sun.tools.sjavac.server.PortFile portFile;
descriptor: Lcom/sun/tools/sjavac/server/PortFile;
flags: (0x0002) ACC_PRIVATE
private java.lang.String serverCommand;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private static final int KEEPALIVE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 120
private static final int POOLSIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int CONNECTION_TIMEOUT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2000
private static final int MAX_CONNECT_ATTEMPTS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private static final int WAIT_BETWEEN_CONNECT_ATTEMPTS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2000
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
putstatic com.sun.tools.sjavac.client.SjavacClient.POOLSIZE:I
1: 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=3, 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: ldc "conf"
aload 2
ldc ""
invokestatic com.sun.tools.sjavac.Util.extractStringOption:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 3
start local 3 3: aload 3
iconst_0
anewarray java.lang.String
invokestatic java.nio.file.Path.of:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/util/List;
astore 4
start local 4 4: ldc "\n"
aload 4
invokestatic java.lang.String.join:(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
astore 5
start local 5 5: ldc "portfile"
aload 5
ldc ""
invokestatic com.sun.tools.sjavac.Util.extractStringOptionLine:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 6
start local 6 6: aload 6
invokevirtual java.lang.String.isEmpty:()Z
ifeq 10
7: ldc "Configuration file missing value for 'portfile'"
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
8: aload 0
aconst_null
putfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
9: goto 11
10: StackMap locals: com.sun.tools.sjavac.client.SjavacClient com.sun.tools.sjavac.options.Options java.lang.String java.lang.String java.util.List java.lang.String java.lang.String
StackMap stack:
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;
11: StackMap locals:
StackMap stack:
ldc "servercmd"
aload 5
ldc ""
invokestatic com.sun.tools.sjavac.Util.extractStringOptionLine:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 7
start local 7 12: aload 7
invokevirtual java.lang.String.isEmpty:()Z
ifeq 16
13: ldc "Configuration file missing value for 'servercmd'"
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
14: aload 0
aconst_null
putfield com.sun.tools.sjavac.client.SjavacClient.serverCommand:Ljava/lang/String;
15: goto 23
16: StackMap locals: java.lang.String
StackMap stack:
aload 0
aload 7
putfield com.sun.tools.sjavac.client.SjavacClient.serverCommand:Ljava/lang/String;
end local 7 end local 6 end local 5 end local 4 17: goto 23
StackMap locals: com.sun.tools.sjavac.client.SjavacClient com.sun.tools.sjavac.options.Options java.lang.String java.lang.String
StackMap stack: java.io.IOException
18: astore 4
start local 4 19: new java.lang.StringBuilder
dup
ldc "Cannot read configuration file "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
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
20: aload 4
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/Throwable;)V
21: aload 0
aconst_null
putfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
22: aload 0
aconst_null
putfield com.sun.tools.sjavac.client.SjavacClient.serverCommand:Ljava/lang/String;
end local 4 23: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
0 24 1 options Lcom/sun/tools/sjavac/options/Options;
2 24 2 serverConf Ljava/lang/String;
3 24 3 configFile Ljava/lang/String;
4 17 4 configFileLines Ljava/util/List<Ljava/lang/String;>;
5 17 5 configFileContent Ljava/lang/String;
6 17 6 portfileName Ljava/lang/String;
12 17 7 serverCommandString Ljava/lang/String;
19 23 4 e Ljava/io/IOException;
Exception table:
from to target type
3 17 18 Class java.io.IOException
MethodParameters:
Name Flags
options
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: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
ifnull 1
aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.serverCommand:Ljava/lang/String;
ifnonnull 3
1: StackMap locals:
StackMap stack:
ldc "Incorrect configuration, portfile and/or servercmd missing"
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
2: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
areturn
3: StackMap locals:
StackMap stack:
aconst_null
astore 2
start local 2 4: aconst_null
astore 3
aconst_null
astore 4
5: aload 0
invokevirtual com.sun.tools.sjavac.client.SjavacClient.tryConnect:()Ljava/net/Socket;
astore 5
start local 5 6: 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 7: 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 8: aload 6
aload 1
arraylength
invokevirtual java.io.PrintWriter.println:(I)V
9: aload 1
dup
astore 11
arraylength
istore 10
iconst_0
istore 9
goto 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 top int int java.lang.String[]
StackMap stack:
10: aload 11
iload 9
aaload
astore 8
start local 8 11: aload 6
aload 8
invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
end local 8 12: iinc 9 1
StackMap locals:
StackMap stack:
13: iload 9
iload 10
if_icmplt 10
14: aload 6
invokevirtual java.io.PrintWriter.flush:()V
15: goto 28
start local 8 16: 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 18
17: 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
18: 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 19: aload 9
iconst_0
aaload
astore 10
start local 10 20: aload 9
iconst_1
aaload
astore 11
start local 11 21: invokestatic com.sun.tools.sjavac.Log.isDebugging:()Z
ifeq 23
22: 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
23: 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
24: goto 28
25: StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
pop
26: aload 10
ldc "RC"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 28
27: 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 28: 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 29: ifnonnull 16
end local 8 end local 7 end local 6 30: aload 5
ifnull 49
aload 5
invokevirtual java.net.Socket.close:()V
goto 49
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
31: astore 3
aload 5
ifnull 32
aload 5
invokevirtual java.net.Socket.close:()V
end local 5 StackMap locals:
StackMap stack:
32: aload 3
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
33: astore 4
aload 3
ifnonnull 34
aload 4
astore 3
goto 35
StackMap locals:
StackMap stack:
34: aload 3
aload 4
if_acmpeq 35
aload 3
aload 4
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
35: 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
36: pop
37: ldc "Port file inaccessible."
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
38: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
astore 2
goto 49
39: StackMap locals:
StackMap stack: java.io.IOException
astore 3
start local 3 40: 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
41: aload 3
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/Throwable;)V
42: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
astore 2
end local 3 43: goto 49
44: StackMap locals:
StackMap stack: java.lang.InterruptedException
astore 3
start local 3 45: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
46: ldc "Compilation interrupted."
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
47: aload 3
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/Throwable;)V
48: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
astore 2
end local 3 49: StackMap locals:
StackMap stack:
aload 2
ifnonnull 51
50: getstatic com.sun.tools.javac.main.Main$Result.ERROR:Lcom/sun/tools/javac/main/Main$Result;
astore 2
51: StackMap locals:
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
0 52 1 args [Ljava/lang/String;
4 52 2 result Lcom/sun/tools/javac/main/Main$Result;
6 32 5 socket Ljava/net/Socket;
7 30 6 out Ljava/io/PrintWriter;
8 30 7 in Ljava/io/BufferedReader;
11 12 8 arg Ljava/lang/String;
16 28 8 line Ljava/lang/String;
29 30 8 line Ljava/lang/String;
19 28 9 typeAndContent [Ljava/lang/String;
20 28 10 type Ljava/lang/String;
21 28 11 content Ljava/lang/String;
40 43 3 ioe Ljava/io/IOException;
45 49 3 ie Ljava/lang/InterruptedException;
Exception table:
from to target type
21 24 25 Class java.lang.IllegalArgumentException
6 30 31 any
5 33 33 any
4 36 36 Class com.sun.tools.sjavac.client.PortFileInaccessibleException
4 36 39 Class java.io.IOException
4 36 44 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
invokevirtual com.sun.tools.sjavac.client.SjavacClient.makeSureServerIsRunning:()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;
iconst_3
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
iconst_3
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:
ldc 2000
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
sipush 2000
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();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.exists:()Z
ifeq 6
1: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.lock:()V
2: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.getValues:()V
3: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.unlock:()V
4: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.containsPortInfo:()Z
ifeq 6
5: return
6: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.tools.sjavac.client.SjavacClient.startNewServer:()V
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
Exceptions:
throws java.io.IOException, java.lang.InterruptedException
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 void startNewServer();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=8, args_size=1
start local 0 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 1
start local 1 1: aload 1
aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.serverCommand: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 1
new java.lang.StringBuilder
dup
ldc "--startserver:portfile="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
3: aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
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;
getstatic com.sun.tools.sjavac.client.SjavacClient.POOLSIZE:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
5: ldc ",keepalive="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
bipush 120
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 1
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 1
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 2
start local 2 12: goto 17
end local 2 StackMap locals: com.sun.tools.sjavac.client.SjavacClient java.util.List
StackMap stack: java.io.IOException
13: astore 3
start local 3 14: new java.lang.StringBuilder
dup
ldc "Failed to create server process: "
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
15: aload 3
invokestatic com.sun.tools.sjavac.Log.debug:(Ljava/lang/Throwable;)V
16: new java.io.IOException
dup
aload 3
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 3 start local 2 17: StackMap locals: java.lang.Process
StackMap stack:
aload 0
getfield com.sun.tools.sjavac.client.SjavacClient.portFile:Lcom/sun/tools/sjavac/server/PortFile;
invokevirtual com.sun.tools.sjavac.server.PortFile.waitForValidValues:()V
18: goto 37
StackMap locals:
StackMap stack: java.io.IOException
19: astore 3
start local 3 20: new java.lang.StringBuilder
dup
ldc "Sjavac server failed to initialize: "
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
21: ldc "Process output:"
invokestatic com.sun.tools.sjavac.Log.error:(Ljava/lang/String;)V
22: new java.io.InputStreamReader
dup
aload 2
invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
astore 4
start local 4 23: aconst_null
astore 5
aconst_null
astore 6
24: new java.io.BufferedReader
dup
aload 4
invokespecial java.io.BufferedReader.<init>:(Ljava/io/Reader;)V
astore 7
start local 7 25: aload 7
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 7
ifnull 32
aload 7
invokevirtual java.io.BufferedReader.close:()V
goto 32
StackMap locals: com.sun.tools.sjavac.client.SjavacClient 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 5
aload 7
ifnull 28
aload 7
invokevirtual java.io.BufferedReader.close:()V
end local 7 StackMap locals:
StackMap stack:
28: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
29: astore 6
aload 5
ifnonnull 30
aload 6
astore 5
goto 31
StackMap locals:
StackMap stack:
30: aload 5
aload 6
if_acmpeq 31
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
31: aload 5
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 2
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 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;
aload 3
invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 end local 3 37: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lcom/sun/tools/sjavac/client/SjavacClient;
1 38 1 cmd Ljava/util/List<Ljava/lang/String;>;
12 13 2 serverProcess Ljava/lang/Process;
17 38 2 serverProcess Ljava/lang/Process;
14 17 3 ex Ljava/io/IOException;
20 37 3 ex Ljava/io/IOException;
23 37 4 serverStdoutStderr Ljava/io/Reader;
25 28 7 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
}
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