public class org.jruby.util.ShellLauncher$POpenProcess extends java.lang.Process
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.util.ShellLauncher$POpenProcess
super_class: java.lang.Process
{
private final java.lang.Process child;
descriptor: Ljava/lang/Process;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean waitForChild;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.io.InputStream realInput;
descriptor: Ljava/io/InputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.OutputStream realOutput;
descriptor: Ljava/io/OutputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.InputStream realInerr;
descriptor: Ljava/io/InputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.InputStream input;
descriptor: Ljava/io/InputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.OutputStream output;
descriptor: Ljava/io/OutputStream;
flags: (0x0002) ACC_PRIVATE
private java.io.InputStream inerr;
descriptor: Ljava/io/InputStream;
flags: (0x0002) ACC_PRIVATE
private java.nio.channels.FileChannel inputChannel;
descriptor: Ljava/nio/channels/FileChannel;
flags: (0x0002) ACC_PRIVATE
private java.nio.channels.FileChannel outputChannel;
descriptor: Ljava/nio/channels/FileChannel;
flags: (0x0002) ACC_PRIVATE
private java.nio.channels.FileChannel inerrChannel;
descriptor: Ljava/nio/channels/FileChannel;
flags: (0x0002) ACC_PRIVATE
private org.jruby.util.ShellLauncher$Pumper inputPumper;
descriptor: Lorg/jruby/util/ShellLauncher$Pumper;
flags: (0x0002) ACC_PRIVATE
private org.jruby.util.ShellLauncher$Pumper inerrPumper;
descriptor: Lorg/jruby/util/ShellLauncher$Pumper;
flags: (0x0002) ACC_PRIVATE
public void <init>(java.lang.Process, org.jruby.Ruby, org.jruby.util.io.IOOptions);
descriptor: (Ljava/lang/Process;Lorg/jruby/Ruby;Lorg/jruby/util/io/IOOptions;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
invokevirtual org.jruby.util.io.IOOptions.getModeFlags:()Lorg/jruby/util/io/ModeFlags;
invokespecial org.jruby.util.ShellLauncher$POpenProcess.<init>:(Ljava/lang/Process;Lorg/jruby/Ruby;Lorg/jruby/util/io/ModeFlags;)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
0 2 1 child Ljava/lang/Process;
0 2 2 runtime Lorg/jruby/Ruby;
0 2 3 modes Lorg/jruby/util/io/IOOptions;
RuntimeVisibleAnnotations:
java.lang.Deprecated()
MethodParameters:
Name Flags
child
runtime
modes
public void <init>(java.lang.Process, org.jruby.Ruby, org.jruby.util.io.ModeFlags);
descriptor: (Ljava/lang/Process;Lorg/jruby/Ruby;Lorg/jruby/util/io/ModeFlags;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial java.lang.Process.<init>:()V
1: aload 0
aload 1
putfield org.jruby.util.ShellLauncher$POpenProcess.child:Ljava/lang/Process;
2: aload 3
invokevirtual org.jruby.util.io.ModeFlags.isWritable:()Z
ifeq 6
3: aload 0
iconst_1
putfield org.jruby.util.ShellLauncher$POpenProcess.waitForChild:Z
4: aload 0
aload 1
invokevirtual org.jruby.util.ShellLauncher$POpenProcess.prepareOutput:(Ljava/lang/Process;)V
5: goto 10
6: StackMap locals: org.jruby.util.ShellLauncher$POpenProcess java.lang.Process org.jruby.Ruby org.jruby.util.io.ModeFlags
StackMap stack:
aload 0
iconst_0
putfield org.jruby.util.ShellLauncher$POpenProcess.waitForChild:Z
7: aload 1
invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.close:()V
8: goto 10
StackMap locals:
StackMap stack: java.io.IOException
9: pop
10: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.jruby.util.io.ModeFlags.isReadable:()Z
ifeq 13
11: aload 0
aload 1
invokevirtual org.jruby.util.ShellLauncher$POpenProcess.prepareInput:(Ljava/lang/Process;)V
12: goto 14
13: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual org.jruby.util.ShellLauncher$POpenProcess.pumpInput:(Ljava/lang/Process;Lorg/jruby/Ruby;)V
14: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual org.jruby.util.ShellLauncher$POpenProcess.pumpInerr:(Ljava/lang/Process;Lorg/jruby/Ruby;)V
15: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
0 16 1 child Ljava/lang/Process;
0 16 2 runtime Lorg/jruby/Ruby;
0 16 3 modes Lorg/jruby/util/io/ModeFlags;
Exception table:
from to target type
7 8 9 Class java.io.IOException
MethodParameters:
Name Flags
child
runtime
modes
public void <init>(java.lang.Process);
descriptor: (Ljava/lang/Process;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Process.<init>:()V
1: aload 0
aload 1
putfield org.jruby.util.ShellLauncher$POpenProcess.child:Ljava/lang/Process;
2: aload 0
iconst_0
putfield org.jruby.util.ShellLauncher$POpenProcess.waitForChild:Z
3: aload 0
aload 1
invokevirtual org.jruby.util.ShellLauncher$POpenProcess.prepareOutput:(Ljava/lang/Process;)V
4: aload 0
aload 1
invokevirtual org.jruby.util.ShellLauncher$POpenProcess.prepareInput:(Ljava/lang/Process;)V
5: aload 0
aload 1
invokevirtual org.jruby.util.ShellLauncher$POpenProcess.prepareInerr:(Ljava/lang/Process;)V
6: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
0 7 1 child Ljava/lang/Process;
MethodParameters:
Name Flags
child
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 org.jruby.util.ShellLauncher$POpenProcess.output:Ljava/io/OutputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
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 org.jruby.util.ShellLauncher$POpenProcess.input:Ljava/io/InputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
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 org.jruby.util.ShellLauncher$POpenProcess.inerr:Ljava/io/InputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
public java.nio.channels.FileChannel getInput();
descriptor: ()Ljava/nio/channels/FileChannel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inputChannel:Ljava/nio/channels/FileChannel;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
public java.nio.channels.FileChannel getOutput();
descriptor: ()Ljava/nio/channels/FileChannel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.outputChannel:Ljava/nio/channels/FileChannel;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
public java.nio.channels.FileChannel getError();
descriptor: ()Ljava/nio/channels/FileChannel;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerrChannel:Ljava/nio/channels/FileChannel;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
public boolean hasOutput();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.output:Ljava/io/OutputStream;
ifnonnull 1
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.outputChannel:Ljava/nio/channels/FileChannel;
ifnonnull 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
public java.lang.Process getChild();
descriptor: ()Ljava/lang/Process;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.child:Ljava/lang/Process;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
public int waitFor();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.child:Ljava/lang/Process;
invokevirtual java.lang.Process.waitFor:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
Exceptions:
throws java.lang.InterruptedException
public int exitValue();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.child:Ljava/lang/Process;
invokevirtual java.lang.Process.exitValue:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
public void destroy();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.input:Ljava/io/InputStream;
ifnull 3
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.input:Ljava/io/InputStream;
invokevirtual java.io.InputStream.close:()V
1: goto 3
StackMap locals:
StackMap stack: java.lang.Exception
2: pop
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerr:Ljava/io/InputStream;
ifnull 6
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerr:Ljava/io/InputStream;
invokevirtual java.io.InputStream.close:()V
4: goto 6
StackMap locals:
StackMap stack: java.lang.Exception
5: pop
6: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.output:Ljava/io/OutputStream;
ifnull 9
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.output:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.close:()V
7: goto 9
StackMap locals:
StackMap stack: java.lang.Exception
8: pop
9: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inputChannel:Ljava/nio/channels/FileChannel;
ifnull 12
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inputChannel:Ljava/nio/channels/FileChannel;
invokevirtual java.nio.channels.FileChannel.close:()V
10: goto 12
StackMap locals:
StackMap stack: java.lang.Exception
11: pop
12: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerrChannel:Ljava/nio/channels/FileChannel;
ifnull 15
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerrChannel:Ljava/nio/channels/FileChannel;
invokevirtual java.nio.channels.FileChannel.close:()V
13: goto 15
StackMap locals:
StackMap stack: java.lang.Exception
14: pop
15: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.outputChannel:Ljava/nio/channels/FileChannel;
ifnull 18
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.outputChannel:Ljava/nio/channels/FileChannel;
invokevirtual java.nio.channels.FileChannel.close:()V
16: goto 18
StackMap locals:
StackMap stack: java.lang.Exception
17: pop
18: StackMap locals:
StackMap stack:
aload 0
dup
astore 1
monitorenter
19: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inputPumper:Lorg/jruby/util/ShellLauncher$Pumper;
ifnull 24
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inputPumper:Lorg/jruby/util/ShellLauncher$Pumper;
dup
astore 2
monitorenter
20: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inputPumper:Lorg/jruby/util/ShellLauncher$Pumper;
invokeinterface org.jruby.util.ShellLauncher$Pumper.quit:()V
aload 2
monitorexit
21: goto 24
StackMap locals: org.jruby.util.ShellLauncher$POpenProcess org.jruby.util.ShellLauncher$POpenProcess org.jruby.util.ShellLauncher$Pumper
StackMap stack: java.lang.Throwable
22: aload 2
monitorexit
23: athrow
24: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerrPumper:Lorg/jruby/util/ShellLauncher$Pumper;
ifnull 29
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerrPumper:Lorg/jruby/util/ShellLauncher$Pumper;
dup
astore 2
monitorenter
25: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerrPumper:Lorg/jruby/util/ShellLauncher$Pumper;
invokeinterface org.jruby.util.ShellLauncher$Pumper.quit:()V
aload 2
monitorexit
26: goto 29
StackMap locals: org.jruby.util.ShellLauncher$POpenProcess org.jruby.util.ShellLauncher$POpenProcess org.jruby.util.ShellLauncher$Pumper
StackMap stack: java.lang.Throwable
27: aload 2
monitorexit
28: athrow
29: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.waitForChild:Z
ifeq 32
30: aload 0
invokevirtual org.jruby.util.ShellLauncher$POpenProcess.waitFor:()I
pop
31: goto 33
32: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.child:Ljava/lang/Process;
invokestatic org.jruby.RubyIO.obliterateProcess:(Ljava/lang/Process;)V
33: StackMap locals:
StackMap stack:
aload 1
monitorexit
34: goto 39
StackMap locals:
StackMap stack: java.lang.Throwable
35: aload 1
monitorexit
36: athrow
37: StackMap locals: org.jruby.util.ShellLauncher$POpenProcess
StackMap stack: java.lang.InterruptedException
pop
38: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
39: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
Exception table:
from to target type
0 1 2 Class java.lang.Exception
3 4 5 Class java.lang.Exception
6 7 8 Class java.lang.Exception
9 10 11 Class java.lang.Exception
12 13 14 Class java.lang.Exception
15 16 17 Class java.lang.Exception
20 21 22 any
22 23 22 any
25 26 27 any
27 28 27 any
19 34 35 any
35 36 35 any
0 37 37 Class java.lang.InterruptedException
private void prepareInput(java.lang.Process);
descriptor: (Ljava/lang/Process;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
putfield org.jruby.util.ShellLauncher$POpenProcess.realInput:Ljava/io/InputStream;
1: aload 0
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.realInput:Ljava/io/InputStream;
putfield org.jruby.util.ShellLauncher$POpenProcess.input:Ljava/io/InputStream;
2: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.inputChannel:Ljava/nio/channels/FileChannel;
3: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.inputPumper:Lorg/jruby/util/ShellLauncher$Pumper;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
0 5 1 child Ljava/lang/Process;
MethodParameters:
Name Flags
child
private void prepareInerr(java.lang.Process);
descriptor: (Ljava/lang/Process;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
putfield org.jruby.util.ShellLauncher$POpenProcess.realInerr:Ljava/io/InputStream;
1: aload 0
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.realInerr:Ljava/io/InputStream;
putfield org.jruby.util.ShellLauncher$POpenProcess.inerr:Ljava/io/InputStream;
2: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.inerrChannel:Ljava/nio/channels/FileChannel;
3: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.inerrPumper:Lorg/jruby/util/ShellLauncher$Pumper;
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
0 5 1 child Ljava/lang/Process;
MethodParameters:
Name Flags
child
private void prepareOutput(java.lang.Process);
descriptor: (Ljava/lang/Process;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
putfield org.jruby.util.ShellLauncher$POpenProcess.realOutput:Ljava/io/OutputStream;
1: aload 0
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.realOutput:Ljava/io/OutputStream;
invokestatic org.jruby.util.io.ChannelHelper.unwrapBufferedStream:(Ljava/io/OutputStream;)Ljava/io/OutputStream;
putfield org.jruby.util.ShellLauncher$POpenProcess.output:Ljava/io/OutputStream;
2: aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.output:Ljava/io/OutputStream;
instanceof java.io.FileOutputStream
ifeq 5
3: aload 0
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.output:Ljava/io/OutputStream;
checkcast java.io.FileOutputStream
invokevirtual java.io.FileOutputStream.getChannel:()Ljava/nio/channels/FileChannel;
putfield org.jruby.util.ShellLauncher$POpenProcess.outputChannel:Ljava/nio/channels/FileChannel;
4: goto 6
5: StackMap locals:
StackMap stack:
aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.outputChannel:Ljava/nio/channels/FileChannel;
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
0 7 1 child Ljava/lang/Process;
MethodParameters:
Name Flags
child
private void pumpInput(java.lang.Process, org.jruby.Ruby);
descriptor: (Ljava/lang/Process;Lorg/jruby/Ruby;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
invokestatic org.jruby.util.io.ChannelHelper.unwrapBufferedStream:(Ljava/io/InputStream;)Ljava/io/InputStream;
astore 3
start local 3 1: aconst_null
astore 4
start local 4 2: aload 3
instanceof java.io.FileInputStream
ifeq 4
3: aload 3
checkcast java.io.FileInputStream
invokevirtual java.io.FileInputStream.getChannel:()Ljava/nio/channels/FileChannel;
astore 4
4: StackMap locals: java.io.InputStream java.nio.channels.FileChannel
StackMap stack:
aload 2
invokevirtual org.jruby.Ruby.getOut:()Ljava/io/PrintStream;
invokestatic org.jruby.util.io.ChannelHelper.unwrapBufferedStream:(Ljava/io/OutputStream;)Ljava/io/OutputStream;
astore 5
start local 5 5: aconst_null
astore 6
start local 6 6: aload 5
instanceof java.io.FileOutputStream
ifeq 8
7: aload 5
checkcast java.io.FileOutputStream
invokevirtual java.io.FileOutputStream.getChannel:()Ljava/nio/channels/FileChannel;
astore 6
8: StackMap locals: java.io.OutputStream java.nio.channels.FileChannel
StackMap stack:
aload 4
ifnull 11
aload 6
ifnull 11
9: aload 0
new org.jruby.util.ShellLauncher$ChannelPumper
dup
aload 2
aload 4
aload 6
getstatic org.jruby.util.ShellLauncher$Pumper$Slave.IN:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
aload 0
invokespecial org.jruby.util.ShellLauncher$ChannelPumper.<init>:(Lorg/jruby/Ruby;Ljava/nio/channels/FileChannel;Ljava/nio/channels/FileChannel;Lorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
putfield org.jruby.util.ShellLauncher$POpenProcess.inputPumper:Lorg/jruby/util/ShellLauncher$Pumper;
10: goto 12
11: StackMap locals:
StackMap stack:
aload 0
new org.jruby.util.ShellLauncher$StreamPumper
dup
aload 2
aload 3
aload 5
iconst_0
getstatic org.jruby.util.ShellLauncher$Pumper$Slave.IN:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
aload 0
invokespecial org.jruby.util.ShellLauncher$StreamPumper.<init>:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/io/OutputStream;ZLorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
putfield org.jruby.util.ShellLauncher$POpenProcess.inputPumper:Lorg/jruby/util/ShellLauncher$Pumper;
12: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inputPumper:Lorg/jruby/util/ShellLauncher$Pumper;
invokeinterface org.jruby.util.ShellLauncher$Pumper.start:()V
13: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.input:Ljava/io/InputStream;
14: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.inputChannel:Ljava/nio/channels/FileChannel;
15: return
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 16 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
0 16 1 child Ljava/lang/Process;
0 16 2 runtime Lorg/jruby/Ruby;
1 16 3 childIn Ljava/io/InputStream;
2 16 4 childInChannel Ljava/nio/channels/FileChannel;
5 16 5 parentOut Ljava/io/OutputStream;
6 16 6 parentOutChannel Ljava/nio/channels/FileChannel;
MethodParameters:
Name Flags
child
runtime
private void pumpInerr(java.lang.Process, org.jruby.Ruby);
descriptor: (Ljava/lang/Process;Lorg/jruby/Ruby;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
invokestatic org.jruby.util.io.ChannelHelper.unwrapBufferedStream:(Ljava/io/InputStream;)Ljava/io/InputStream;
astore 3
start local 3 1: aconst_null
astore 4
start local 4 2: aload 3
instanceof java.io.FileInputStream
ifeq 4
3: aload 3
checkcast java.io.FileInputStream
invokevirtual java.io.FileInputStream.getChannel:()Ljava/nio/channels/FileChannel;
astore 4
4: StackMap locals: java.io.InputStream java.nio.channels.FileChannel
StackMap stack:
aload 2
invokevirtual org.jruby.Ruby.getOut:()Ljava/io/PrintStream;
invokestatic org.jruby.util.io.ChannelHelper.unwrapBufferedStream:(Ljava/io/OutputStream;)Ljava/io/OutputStream;
astore 5
start local 5 5: aconst_null
astore 6
start local 6 6: aload 5
instanceof java.io.FileOutputStream
ifeq 8
7: aload 5
checkcast java.io.FileOutputStream
invokevirtual java.io.FileOutputStream.getChannel:()Ljava/nio/channels/FileChannel;
astore 6
8: StackMap locals: java.io.OutputStream java.nio.channels.FileChannel
StackMap stack:
aload 4
ifnull 11
aload 6
ifnull 11
9: aload 0
new org.jruby.util.ShellLauncher$ChannelPumper
dup
aload 2
aload 4
aload 6
getstatic org.jruby.util.ShellLauncher$Pumper$Slave.IN:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
aload 0
invokespecial org.jruby.util.ShellLauncher$ChannelPumper.<init>:(Lorg/jruby/Ruby;Ljava/nio/channels/FileChannel;Ljava/nio/channels/FileChannel;Lorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
putfield org.jruby.util.ShellLauncher$POpenProcess.inerrPumper:Lorg/jruby/util/ShellLauncher$Pumper;
10: goto 12
11: StackMap locals:
StackMap stack:
aload 0
new org.jruby.util.ShellLauncher$StreamPumper
dup
aload 2
aload 3
aload 5
iconst_0
getstatic org.jruby.util.ShellLauncher$Pumper$Slave.IN:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
aload 0
invokespecial org.jruby.util.ShellLauncher$StreamPumper.<init>:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/io/OutputStream;ZLorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
putfield org.jruby.util.ShellLauncher$POpenProcess.inerrPumper:Lorg/jruby/util/ShellLauncher$Pumper;
12: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$POpenProcess.inerrPumper:Lorg/jruby/util/ShellLauncher$Pumper;
invokeinterface org.jruby.util.ShellLauncher$Pumper.start:()V
13: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.inerr:Ljava/io/InputStream;
14: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$POpenProcess.inerrChannel:Ljava/nio/channels/FileChannel;
15: return
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 16 0 this Lorg/jruby/util/ShellLauncher$POpenProcess;
0 16 1 child Ljava/lang/Process;
0 16 2 runtime Lorg/jruby/Ruby;
1 16 3 childIn Ljava/io/InputStream;
2 16 4 childInChannel Ljava/nio/channels/FileChannel;
5 16 5 parentOut Ljava/io/OutputStream;
6 16 6 parentOutChannel Ljava/nio/channels/FileChannel;
MethodParameters:
Name Flags
child
runtime
}
SourceFile: "ShellLauncher.java"
NestHost: org.jruby.util.ShellLauncher
InnerClasses:
private ChannelPumper = org.jruby.util.ShellLauncher$ChannelPumper of org.jruby.util.ShellLauncher
public POpenProcess = org.jruby.util.ShellLauncher$POpenProcess of org.jruby.util.ShellLauncher
private abstract Pumper = org.jruby.util.ShellLauncher$Pumper of org.jruby.util.ShellLauncher
public final Slave = org.jruby.util.ShellLauncher$Pumper$Slave of org.jruby.util.ShellLauncher$Pumper
private StreamPumper = org.jruby.util.ShellLauncher$StreamPumper of org.jruby.util.ShellLauncher