final class java.lang.UNIXProcess extends java.lang.Process
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: java.lang.UNIXProcess
super_class: java.lang.Process
{
private static final sun.misc.JavaIOFileDescriptorAccess fdAccess;
descriptor: Lsun/misc/JavaIOFileDescriptorAccess;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final int pid;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int exitcode;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean hasExited;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.io.OutputStream stdin;
descriptor: Ljava/io/OutputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.InputStream stdout;
descriptor: Ljava/io/InputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.InputStream stderr;
descriptor: Ljava/io/InputStream;
flags: (0x0002) ACC_PRIVATE
private java.lang.UNIXProcess$DeferredCloseInputStream stdout_inner_stream;
descriptor: Ljava/lang/UNIXProcess$DeferredCloseInputStream;
flags: (0x0002) ACC_PRIVATE
private static final java.lang.UNIXProcess$Platform platform;
descriptor: Ljava/lang/UNIXProcess$Platform;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.UNIXProcess$LaunchMechanism launchMechanism;
descriptor: Ljava/lang/UNIXProcess$LaunchMechanism;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final byte[] helperpath;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.concurrent.Executor processReaperExecutor;
descriptor: Ljava/util/concurrent/Executor;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static volatile int[] $SWITCH_TABLE$java$lang$UNIXProcess$Platform;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: invokestatic sun.misc.SharedSecrets.getJavaIOFileDescriptorAccess:()Lsun/misc/JavaIOFileDescriptorAccess;
1: putstatic java.lang.UNIXProcess.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
2: invokestatic java.lang.UNIXProcess$Platform.get:()Ljava/lang/UNIXProcess$Platform;
putstatic java.lang.UNIXProcess.platform:Ljava/lang/UNIXProcess$Platform;
3: getstatic java.lang.UNIXProcess.platform:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.UNIXProcess$Platform.launchMechanism:()Ljava/lang/UNIXProcess$LaunchMechanism;
putstatic java.lang.UNIXProcess.launchMechanism:Ljava/lang/UNIXProcess$LaunchMechanism;
4: getstatic java.lang.UNIXProcess.platform:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.UNIXProcess$Platform.helperPath:()Ljava/lang/String;
invokestatic java.lang.UNIXProcess.toCString:(Ljava/lang/String;)[B
putstatic java.lang.UNIXProcess.helperpath:[B
5: invokedynamic run()Ljava/security/PrivilegedAction;
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;
java/lang/UNIXProcess.lambda$0()Ljava/util/concurrent/Executor; (6)
()Ljava/util/concurrent/Executor;
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.util.concurrent.Executor
6: putstatic java.lang.UNIXProcess.processReaperExecutor:Ljava/util/concurrent/Executor;
7: invokestatic java.lang.UNIXProcess.init:()V
8: return
LocalVariableTable:
Start End Slot Name Signature
private static byte[] toCString(java.lang.String);
descriptor: (Ljava/lang/String;)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=3, args_size=1
start local 0 0: aload 0
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.String.getBytes:()[B
astore 1
start local 1 3: aload 1
arraylength
iconst_1
iadd
newarray 8
astore 2
start local 2 4: aload 1
iconst_0
5: aload 2
iconst_0
6: aload 1
arraylength
7: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
8: aload 2
aload 2
arraylength
iconst_1
isub
iconst_0
bastore
9: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 s Ljava/lang/String;
3 10 1 bytes [B
4 10 2 result [B
MethodParameters:
Name Flags
s
private native int waitForProcessExit(int);
descriptor: (I)I
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
MethodParameters:
Name Flags
pid
private native int forkAndExec(int, byte[], byte[], byte[], int, byte[], int, byte[], int[], boolean);
descriptor: (I[B[B[BI[BI[B[IZ)I
flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
mode
helperpath
prog
argBlock
argc
envBlock
envc
dir
fds
redirectErrorStream
void <init>(byte[], byte[], int, byte[], int, byte[], int[], boolean);
descriptor: ([B[BI[BI[B[IZ)V
flags: (0x0000)
Code:
stack=12, locals=10, args_size=9
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 start local 8 0: aload 0
invokespecial java.lang.Process.<init>:()V
1: aload 0
aload 0
getstatic java.lang.UNIXProcess.launchMechanism:Ljava/lang/UNIXProcess$LaunchMechanism;
invokevirtual java.lang.UNIXProcess$LaunchMechanism.ordinal:()I
iconst_1
iadd
2: getstatic java.lang.UNIXProcess.helperpath:[B
3: aload 1
4: aload 2
iload 3
5: aload 4
iload 5
6: aload 6
7: aload 7
8: iload 8
9: invokevirtual java.lang.UNIXProcess.forkAndExec:(I[B[B[BI[BI[B[IZ)I
putfield java.lang.UNIXProcess.pid:I
10: aload 0
aload 7
invokedynamic run(Ljava/lang/UNIXProcess;[I)Ljava/security/PrivilegedExceptionAction;
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;
java/lang/UNIXProcess.lambda$2([I)Ljava/lang/Void; (7)
()Ljava/lang/Void;
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
pop
11: goto 14
StackMap locals: java.lang.UNIXProcess byte[] byte[] int byte[] int byte[] int[] int
StackMap stack: java.security.PrivilegedActionException
12: astore 9
start local 9 13: aload 9
invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
checkcast java.io.IOException
athrow
end local 9 14: StackMap locals:
StackMap stack:
return
end local 8 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 15 0 this Ljava/lang/UNIXProcess;
0 15 1 prog [B
0 15 2 argBlock [B
0 15 3 argc I
0 15 4 envBlock [B
0 15 5 envc I
0 15 6 dir [B
0 15 7 fds [I
0 15 8 redirectErrorStream Z
13 14 9 ex Ljava/security/PrivilegedActionException;
Exception table:
from to target type
10 11 12 Class java.security.PrivilegedActionException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
prog final
argBlock final
argc final
envBlock final
envc final
dir final
fds final
redirectErrorStream final
static java.io.FileDescriptor newFileDescriptor(int);
descriptor: (I)Ljava/io/FileDescriptor;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: new java.io.FileDescriptor
dup
invokespecial java.io.FileDescriptor.<init>:()V
astore 1
start local 1 1: getstatic java.lang.UNIXProcess.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
aload 1
iload 0
invokeinterface sun.misc.JavaIOFileDescriptorAccess.set:(Ljava/io/FileDescriptor;I)V
2: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 fd I
1 3 1 fileDescriptor Ljava/io/FileDescriptor;
MethodParameters:
Name Flags
fd
void initStreams(int[]);
descriptor: ([I)V
flags: (0x0000)
Code:
stack=8, locals=2, args_size=2
start local 0 start local 1 0: invokestatic java.lang.UNIXProcess.$SWITCH_TABLE$java$lang$UNIXProcess$Platform:()[I
getstatic java.lang.UNIXProcess.platform:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.UNIXProcess$Platform.ordinal:()I
iaload
tableswitch { // 1 - 4
1: 1
2: 1
3: 15
4: 37
default: 51
}
1: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_0
iaload
iconst_m1
if_icmpne 3
2: getstatic java.lang.ProcessBuilder$NullOutputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullOutputStream;
goto 4
3: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.lang.UNIXProcess$ProcessPipeOutputStream
dup
aload 1
iconst_0
iaload
invokespecial java.lang.UNIXProcess$ProcessPipeOutputStream.<init>:(I)V
4: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.OutputStream
putfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
5: aload 0
aload 1
iconst_1
iaload
iconst_m1
if_icmpne 7
6: getstatic java.lang.ProcessBuilder$NullInputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
goto 8
7: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.lang.UNIXProcess$ProcessPipeInputStream
dup
aload 1
iconst_1
iaload
invokespecial java.lang.UNIXProcess$ProcessPipeInputStream.<init>:(I)V
8: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.InputStream
putfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
9: aload 0
aload 1
iconst_2
iaload
iconst_m1
if_icmpne 11
10: getstatic java.lang.ProcessBuilder$NullInputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
goto 12
11: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.lang.UNIXProcess$ProcessPipeInputStream
dup
aload 1
iconst_2
iaload
invokespecial java.lang.UNIXProcess$ProcessPipeInputStream.<init>:(I)V
12: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.InputStream
putfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
13: getstatic java.lang.UNIXProcess.processReaperExecutor:Ljava/util/concurrent/Executor;
aload 0
invokedynamic run(Ljava/lang/UNIXProcess;)Ljava/lang/Runnable;
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:
()V
java/lang/UNIXProcess.lambda$3()V (7)
()V
invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
14: goto 52
15: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_0
iaload
iconst_m1
if_icmpne 17
16: getstatic java.lang.ProcessBuilder$NullOutputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullOutputStream;
goto 20
17: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.io.BufferedOutputStream
dup
18: new java.io.FileOutputStream
dup
aload 1
iconst_0
iaload
invokestatic java.lang.UNIXProcess.newFileDescriptor:(I)Ljava/io/FileDescriptor;
invokespecial java.io.FileOutputStream.<init>:(Ljava/io/FileDescriptor;)V
19: invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
20: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.OutputStream
putfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
21: aload 0
aload 1
iconst_1
iaload
iconst_m1
if_icmpne 23
22: getstatic java.lang.ProcessBuilder$NullInputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
goto 30
23: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.io.BufferedInputStream
dup
24: aload 0
25: new java.lang.UNIXProcess$DeferredCloseInputStream
dup
26: aload 1
iconst_1
iaload
invokestatic java.lang.UNIXProcess.newFileDescriptor:(I)Ljava/io/FileDescriptor;
27: invokespecial java.lang.UNIXProcess$DeferredCloseInputStream.<init>:(Ljava/io/FileDescriptor;)V
28: dup_x1
putfield java.lang.UNIXProcess.stdout_inner_stream:Ljava/lang/UNIXProcess$DeferredCloseInputStream;
29: invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
30: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.InputStream
putfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
31: aload 0
aload 1
iconst_2
iaload
iconst_m1
if_icmpne 33
32: getstatic java.lang.ProcessBuilder$NullInputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
goto 34
33: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.lang.UNIXProcess$DeferredCloseInputStream
dup
aload 1
iconst_2
iaload
invokestatic java.lang.UNIXProcess.newFileDescriptor:(I)Ljava/io/FileDescriptor;
invokespecial java.lang.UNIXProcess$DeferredCloseInputStream.<init>:(Ljava/io/FileDescriptor;)V
34: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.InputStream
putfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
35: getstatic java.lang.UNIXProcess.processReaperExecutor:Ljava/util/concurrent/Executor;
aload 0
invokedynamic run(Ljava/lang/UNIXProcess;)Ljava/lang/Runnable;
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:
()V
java/lang/UNIXProcess.lambda$4()V (7)
()V
invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
36: goto 52
37: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_0
iaload
iconst_m1
if_icmpne 39
38: getstatic java.lang.ProcessBuilder$NullOutputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullOutputStream;
goto 40
39: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.lang.UNIXProcess$ProcessPipeOutputStream
dup
aload 1
iconst_0
iaload
invokespecial java.lang.UNIXProcess$ProcessPipeOutputStream.<init>:(I)V
40: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.OutputStream
putfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
41: aload 0
aload 1
iconst_1
iaload
iconst_m1
if_icmpne 43
42: getstatic java.lang.ProcessBuilder$NullInputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
goto 44
43: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream
dup
aload 1
iconst_1
iaload
invokespecial java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream.<init>:(I)V
44: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.InputStream
putfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
45: aload 0
aload 1
iconst_2
iaload
iconst_m1
if_icmpne 47
46: getstatic java.lang.ProcessBuilder$NullInputStream.INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream;
goto 48
47: StackMap locals:
StackMap stack: java.lang.UNIXProcess
new java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream
dup
aload 1
iconst_2
iaload
invokespecial java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream.<init>:(I)V
48: StackMap locals: java.lang.UNIXProcess int[]
StackMap stack: java.lang.UNIXProcess java.io.InputStream
putfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
49: getstatic java.lang.UNIXProcess.processReaperExecutor:Ljava/util/concurrent/Executor;
aload 0
invokedynamic run(Ljava/lang/UNIXProcess;)Ljava/lang/Runnable;
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:
()V
java/lang/UNIXProcess.lambda$5()V (7)
()V
invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
50: goto 52
51: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Unsupported platform: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
getstatic java.lang.UNIXProcess.platform:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
52: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 53 0 this Ljava/lang/UNIXProcess;
0 53 1 fds [I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
fds
public java.io.OutputStream getOutputStream();
descriptor: ()Ljava/io/OutputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/UNIXProcess;
public java.io.InputStream getInputStream();
descriptor: ()Ljava/io/InputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/UNIXProcess;
public java.io.InputStream getErrorStream();
descriptor: ()Ljava/io/InputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljava/lang/UNIXProcess;
public synchronized int waitFor();
descriptor: ()I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, 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 java.lang.UNIXProcess.hasExited:Z
ifeq 1
3: aload 0
getfield java.lang.UNIXProcess.exitcode:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Ljava/lang/UNIXProcess;
Exceptions:
throws java.lang.InterruptedException
public synchronized boolean waitFor(long, java.util.concurrent.TimeUnit);
descriptor: (JLjava/util/concurrent/TimeUnit;)Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=4, locals=8, args_size=3
start local 0 start local 1 start local 3 0: aload 3
lload 1
invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
lstore 4
start local 4 1: aload 0
getfield java.lang.UNIXProcess.hasExited:Z
ifeq 2
iconst_1
ireturn
2: StackMap locals: long
StackMap stack:
lload 1
lconst_0
lcmp
ifgt 3
iconst_0
ireturn
3: StackMap locals:
StackMap stack:
invokestatic java.lang.System.nanoTime:()J
lload 4
ladd
lstore 6
start local 6 4: StackMap locals: long
StackMap stack:
getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
aload 0
lload 4
invokevirtual java.util.concurrent.TimeUnit.timedWait:(Ljava/lang/Object;J)V
5: aload 0
getfield java.lang.UNIXProcess.hasExited:Z
ifeq 7
6: iconst_1
ireturn
7: StackMap locals:
StackMap stack:
lload 6
invokestatic java.lang.System.nanoTime:()J
lsub
lstore 4
8: lload 4
lconst_0
9: lcmp
ifgt 4
10: aload 0
getfield java.lang.UNIXProcess.hasExited:Z
ireturn
end local 6 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Ljava/lang/UNIXProcess;
0 11 1 timeout J
0 11 3 unit Ljava/util/concurrent/TimeUnit;
1 11 4 remainingNanos J
4 11 6 deadline J
Exceptions:
throws java.lang.InterruptedException
MethodParameters:
Name Flags
timeout
unit
public synchronized int exitValue();
descriptor: ()I
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.UNIXProcess.hasExited:Z
ifne 2
1: new java.lang.IllegalThreadStateException
dup
ldc "process hasn't exited"
invokespecial java.lang.IllegalThreadStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.exitcode:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/UNIXProcess;
private static native void destroyProcess(int, boolean);
descriptor: (IZ)V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
MethodParameters:
Name Flags
pid
force
private void destroy(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: invokestatic java.lang.UNIXProcess.$SWITCH_TABLE$java$lang$UNIXProcess$Platform:()[I
getstatic java.lang.UNIXProcess.platform:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.UNIXProcess$Platform.ordinal:()I
iaload
tableswitch { // 1 - 4
1: 1
2: 1
3: 18
4: 1
default: 33
}
1: StackMap locals:
StackMap stack:
aload 0
dup
astore 2
monitorenter
2: aload 0
getfield java.lang.UNIXProcess.hasExited:Z
ifne 4
3: aload 0
getfield java.lang.UNIXProcess.pid:I
iload 1
invokestatic java.lang.UNIXProcess.destroyProcess:(IZ)V
4: StackMap locals: java.lang.UNIXProcess
StackMap stack:
aload 2
monitorexit
5: goto 8
StackMap locals:
StackMap stack: java.lang.Throwable
6: aload 2
monitorexit
7: athrow
8: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.close:()V
9: goto 11
StackMap locals:
StackMap stack: java.io.IOException
10: pop
11: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
invokevirtual java.io.InputStream.close:()V
12: goto 14
StackMap locals:
StackMap stack: java.io.IOException
13: pop
14: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
invokevirtual java.io.InputStream.close:()V
15: goto 34
StackMap locals:
StackMap stack: java.io.IOException
16: pop
17: goto 34
18: StackMap locals:
StackMap stack:
aload 0
dup
astore 2
monitorenter
19: aload 0
getfield java.lang.UNIXProcess.hasExited:Z
ifne 21
20: aload 0
getfield java.lang.UNIXProcess.pid:I
iload 1
invokestatic java.lang.UNIXProcess.destroyProcess:(IZ)V
21: StackMap locals: java.lang.UNIXProcess
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.close:()V
22: aload 0
getfield java.lang.UNIXProcess.stdout_inner_stream:Ljava/lang/UNIXProcess$DeferredCloseInputStream;
ifnull 24
23: aload 0
getfield java.lang.UNIXProcess.stdout_inner_stream:Ljava/lang/UNIXProcess$DeferredCloseInputStream;
aload 0
getfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
invokevirtual java.lang.UNIXProcess$DeferredCloseInputStream.closeDeferred:(Ljava/io/InputStream;)V
24: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
instanceof java.lang.UNIXProcess$DeferredCloseInputStream
ifeq 29
25: aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
checkcast java.lang.UNIXProcess$DeferredCloseInputStream
26: aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
invokevirtual java.lang.UNIXProcess$DeferredCloseInputStream.closeDeferred:(Ljava/io/InputStream;)V
27: goto 29
StackMap locals:
StackMap stack: java.io.IOException
28: pop
29: StackMap locals:
StackMap stack:
aload 2
monitorexit
30: goto 34
StackMap locals:
StackMap stack: java.lang.Throwable
31: aload 2
monitorexit
32: athrow
33: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "Unsupported platform: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
getstatic java.lang.UNIXProcess.platform:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
34: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 35 0 this Ljava/lang/UNIXProcess;
0 35 1 force Z
Exception table:
from to target type
2 5 6 any
6 7 6 any
8 9 10 Class java.io.IOException
11 12 13 Class java.io.IOException
14 15 16 Class java.io.IOException
21 27 28 Class java.io.IOException
19 30 31 any
31 32 31 any
MethodParameters:
Name Flags
force
public void destroy();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
invokevirtual java.lang.UNIXProcess.destroy:(Z)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/lang/UNIXProcess;
public java.lang.Process destroyForcibly();
descriptor: ()Ljava/lang/Process;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_1
invokevirtual java.lang.UNIXProcess.destroy:(Z)V
1: aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/lang/UNIXProcess;
public synchronized boolean isAlive();
descriptor: ()Z
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield java.lang.UNIXProcess.hasExited:Z
ifeq 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: iconst_1
StackMap locals:
StackMap stack: int
2: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljava/lang/UNIXProcess;
private static native void init();
descriptor: ()V
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
static int[] $SWITCH_TABLE$java$lang$UNIXProcess$Platform();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic java.lang.UNIXProcess.$SWITCH_TABLE$java$lang$UNIXProcess$Platform:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic java.lang.UNIXProcess$Platform.values:()[Ljava/lang/UNIXProcess$Platform;
arraylength
newarray 10
astore 0
2: aload 0
getstatic java.lang.UNIXProcess$Platform.AIX:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.UNIXProcess$Platform.ordinal:()I
iconst_4
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic java.lang.UNIXProcess$Platform.BSD:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.UNIXProcess$Platform.ordinal:()I
iconst_2
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic java.lang.UNIXProcess$Platform.LINUX:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.UNIXProcess$Platform.ordinal:()I
iconst_1
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic java.lang.UNIXProcess$Platform.SOLARIS:Ljava/lang/UNIXProcess$Platform;
invokevirtual java.lang.UNIXProcess$Platform.ordinal:()I
iconst_3
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
dup
putstatic java.lang.UNIXProcess.$SWITCH_TABLE$java$lang$UNIXProcess$Platform:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
private static java.util.concurrent.Executor lambda$0();
descriptor: ()Ljava/util/concurrent/Executor;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=3, args_size=0
0: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getThreadGroup:()Ljava/lang/ThreadGroup;
astore 0
start local 0 1: goto 3
StackMap locals: java.lang.ThreadGroup
StackMap stack:
2: aload 0
invokevirtual java.lang.ThreadGroup.getParent:()Ljava/lang/ThreadGroup;
astore 0
StackMap locals:
StackMap stack:
3: aload 0
invokevirtual java.lang.ThreadGroup.getParent:()Ljava/lang/ThreadGroup;
ifnonnull 2
4: aload 0
astore 1
start local 1 5: aload 1
invokedynamic newThread(Ljava/lang/ThreadGroup;)Ljava/util/concurrent/ThreadFactory;
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/Runnable;)Ljava/lang/Thread;
java/lang/UNIXProcess.lambda$1(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)Ljava/lang/Thread; (6)
(Ljava/lang/Runnable;)Ljava/lang/Thread;
astore 2
start local 2 6: aload 2
invokestatic java.util.concurrent.Executors.newCachedThreadPool:(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
1 7 0 tg Ljava/lang/ThreadGroup;
5 7 1 systemThreadGroup Ljava/lang/ThreadGroup;
6 7 2 threadFactory Ljava/util/concurrent/ThreadFactory;
private java.lang.Void lambda$2(int[]);
descriptor: ([I)Ljava/lang/Void;
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
start local 0 0: aload 0
aload 1
invokevirtual java.lang.UNIXProcess.initStreams:([I)V
1: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljava/lang/UNIXProcess;
Exceptions:
throws java.lang.Exception
private void lambda$3();
descriptor: ()V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
aload 0
getfield java.lang.UNIXProcess.pid:I
invokevirtual java.lang.UNIXProcess.waitForProcessExit:(I)I
istore 1
start local 1 1: aload 0
dup
astore 2
monitorenter
2: aload 0
iload 1
putfield java.lang.UNIXProcess.exitcode:I
3: aload 0
iconst_1
putfield java.lang.UNIXProcess.hasExited:Z
4: aload 0
invokevirtual java.lang.Object.notifyAll:()V
5: aload 2
monitorexit
6: goto 9
StackMap locals: java.lang.UNIXProcess int java.lang.UNIXProcess
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
instanceof java.lang.UNIXProcess$ProcessPipeInputStream
ifeq 11
10: aload 0
getfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
checkcast java.lang.UNIXProcess$ProcessPipeInputStream
invokevirtual java.lang.UNIXProcess$ProcessPipeInputStream.processExited:()V
11: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
instanceof java.lang.UNIXProcess$ProcessPipeInputStream
ifeq 13
12: aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
checkcast java.lang.UNIXProcess$ProcessPipeInputStream
invokevirtual java.lang.UNIXProcess$ProcessPipeInputStream.processExited:()V
13: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
instanceof java.lang.UNIXProcess$ProcessPipeOutputStream
ifeq 15
14: aload 0
getfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
checkcast java.lang.UNIXProcess$ProcessPipeOutputStream
invokevirtual java.lang.UNIXProcess$ProcessPipeOutputStream.processExited:()V
end local 1 15: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/lang/UNIXProcess;
1 15 1 exitcode I
Exception table:
from to target type
2 6 7 any
7 8 7 any
private void lambda$4();
descriptor: ()V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
aload 0
getfield java.lang.UNIXProcess.pid:I
invokevirtual java.lang.UNIXProcess.waitForProcessExit:(I)I
istore 1
start local 1 1: aload 0
dup
astore 2
monitorenter
2: aload 0
iload 1
putfield java.lang.UNIXProcess.exitcode:I
3: aload 0
iconst_1
putfield java.lang.UNIXProcess.hasExited:Z
4: aload 0
invokevirtual java.lang.Object.notifyAll:()V
5: aload 2
monitorexit
6: goto 9
StackMap locals: java.lang.UNIXProcess int java.lang.UNIXProcess
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
end local 1 9: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Ljava/lang/UNIXProcess;
1 9 1 exitcode I
Exception table:
from to target type
2 6 7 any
7 8 7 any
private void lambda$5();
descriptor: ()V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
aload 0
getfield java.lang.UNIXProcess.pid:I
invokevirtual java.lang.UNIXProcess.waitForProcessExit:(I)I
istore 1
start local 1 1: aload 0
dup
astore 2
monitorenter
2: aload 0
iload 1
putfield java.lang.UNIXProcess.exitcode:I
3: aload 0
iconst_1
putfield java.lang.UNIXProcess.hasExited:Z
4: aload 0
invokevirtual java.lang.Object.notifyAll:()V
5: aload 2
monitorexit
6: goto 9
StackMap locals: java.lang.UNIXProcess int java.lang.UNIXProcess
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
instanceof java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream
ifeq 11
10: aload 0
getfield java.lang.UNIXProcess.stdout:Ljava/io/InputStream;
checkcast java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream
invokevirtual java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream.processExited:()V
11: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
instanceof java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream
ifeq 13
12: aload 0
getfield java.lang.UNIXProcess.stderr:Ljava/io/InputStream;
checkcast java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream
invokevirtual java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream.processExited:()V
13: StackMap locals:
StackMap stack:
aload 0
getfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
instanceof java.lang.UNIXProcess$ProcessPipeOutputStream
ifeq 15
14: aload 0
getfield java.lang.UNIXProcess.stdin:Ljava/io/OutputStream;
checkcast java.lang.UNIXProcess$ProcessPipeOutputStream
invokevirtual java.lang.UNIXProcess$ProcessPipeOutputStream.processExited:()V
end local 1 15: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Ljava/lang/UNIXProcess;
1 15 1 exitcode I
Exception table:
from to target type
2 6 7 any
7 8 7 any
private static java.lang.Thread lambda$1(java.lang.ThreadGroup, java.lang.Runnable);
descriptor: (Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)Ljava/lang/Thread;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=7, locals=5, args_size=2
start local 1 0: ldc "jdk.lang.processReaperUseDefaultStackSize"
invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
ifeq 1
iconst_0
goto 2
StackMap locals:
StackMap stack:
1: ldc 32768
StackMap locals:
StackMap stack: int
2: i2l
lstore 2
start local 2 3: new java.lang.Thread
dup
aload 0
aload 1
ldc "process reaper"
lload 2
invokespecial java.lang.Thread.<init>:(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V
astore 4
start local 4 4: aload 4
iconst_1
invokevirtual java.lang.Thread.setDaemon:(Z)V
5: aload 4
bipush 10
invokevirtual java.lang.Thread.setPriority:(I)V
6: aload 4
areturn
end local 4 end local 2 end local 1 LocalVariableTable:
Start End Slot Name Signature
0 7 1 grimReaper Ljava/lang/Runnable;
3 7 2 stackSize J
4 7 4 t Ljava/lang/Thread;
}
SourceFile: "UNIXProcess.java"
NestMembers:
java.lang.UNIXProcess$DeferredCloseInputStream java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream java.lang.UNIXProcess$LaunchMechanism java.lang.UNIXProcess$Platform java.lang.UNIXProcess$ProcessPipeInputStream java.lang.UNIXProcess$ProcessPipeOutputStream
InnerClasses:
NullInputStream = java.lang.ProcessBuilder$NullInputStream of java.lang.ProcessBuilder
NullOutputStream = java.lang.ProcessBuilder$NullOutputStream of java.lang.ProcessBuilder
private DeferredCloseInputStream = java.lang.UNIXProcess$DeferredCloseInputStream of java.lang.UNIXProcess
private DeferredCloseProcessPipeInputStream = java.lang.UNIXProcess$DeferredCloseProcessPipeInputStream of java.lang.UNIXProcess
private final LaunchMechanism = java.lang.UNIXProcess$LaunchMechanism of java.lang.UNIXProcess
private final Platform = java.lang.UNIXProcess$Platform of java.lang.UNIXProcess
private ProcessPipeInputStream = java.lang.UNIXProcess$ProcessPipeInputStream of java.lang.UNIXProcess
private ProcessPipeOutputStream = java.lang.UNIXProcess$ProcessPipeOutputStream of java.lang.UNIXProcess
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles