class org.jruby.util.ShellLauncher$ScriptThreadProcess extends java.lang.Process implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.jruby.util.ShellLauncher$ScriptThreadProcess
super_class: java.lang.Process
{
private final java.lang.String[] argArray;
descriptor: [Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String[] env;
descriptor: [Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.io.File pwd;
descriptor: Ljava/io/File;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean pipedStreams;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.io.PipedInputStream processOutput;
descriptor: Ljava/io/PipedInputStream;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.io.PipedInputStream processError;
descriptor: Ljava/io/PipedInputStream;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.io.PipedOutputStream processInput;
descriptor: Ljava/io/PipedOutputStream;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.jruby.RubyInstanceConfig config;
descriptor: Lorg/jruby/RubyInstanceConfig;
flags: (0x0002) ACC_PRIVATE
private java.lang.Thread processThread;
descriptor: Ljava/lang/Thread;
flags: (0x0002) ACC_PRIVATE
private int result;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private org.jruby.Ruby parentRuntime;
descriptor: Lorg/jruby/Ruby;
flags: (0x0002) ACC_PRIVATE
public void <init>(org.jruby.Ruby, java.lang.String[], java.lang.String[], java.io.File);
descriptor: (Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
aload 2
aload 3
aload 4
iconst_1
invokespecial org.jruby.util.ShellLauncher$ScriptThreadProcess.<init>:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;Z)V
1: return
end local 4 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$ScriptThreadProcess;
0 2 1 parentRuntime Lorg/jruby/Ruby;
0 2 2 argArray [Ljava/lang/String;
0 2 3 env [Ljava/lang/String;
0 2 4 dir Ljava/io/File;
MethodParameters:
Name Flags
parentRuntime
argArray final
env final
dir final
public void <init>(org.jruby.Ruby, java.lang.String[], java.lang.String[], java.io.File, boolean);
descriptor: (Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokespecial java.lang.Process.<init>:()V
1: aload 0
aload 1
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.parentRuntime:Lorg/jruby/Ruby;
2: aload 0
aload 2
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.argArray:[Ljava/lang/String;
3: aload 0
aload 3
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.env:[Ljava/lang/String;
4: aload 0
aload 4
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.pwd:Ljava/io/File;
5: aload 0
iload 5
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.pipedStreams:Z
6: iload 5
ifeq 11
7: aload 0
new java.io.PipedInputStream
dup
invokespecial java.io.PipedInputStream.<init>:()V
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processOutput:Ljava/io/PipedInputStream;
8: aload 0
new java.io.PipedInputStream
dup
invokespecial java.io.PipedInputStream.<init>:()V
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processError:Ljava/io/PipedInputStream;
9: aload 0
new java.io.PipedOutputStream
dup
invokespecial java.io.PipedOutputStream.<init>:()V
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processInput:Ljava/io/PipedOutputStream;
10: goto 13
11: StackMap locals: org.jruby.util.ShellLauncher$ScriptThreadProcess org.jruby.Ruby java.lang.String[] java.lang.String[] java.io.File int
StackMap stack:
aload 0
aload 0
aconst_null
dup_x1
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processError:Ljava/io/PipedInputStream;
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processOutput:Ljava/io/PipedInputStream;
12: aload 0
aconst_null
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processInput:Ljava/io/PipedOutputStream;
13: 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 14 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
0 14 1 parentRuntime Lorg/jruby/Ruby;
0 14 2 argArray [Ljava/lang/String;
0 14 3 env [Ljava/lang/String;
0 14 4 dir Ljava/io/File;
0 14 5 pipedStreams Z
MethodParameters:
Name Flags
parentRuntime
argArray final
env final
dir final
pipedStreams final
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
new org.jruby.Main
dup
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokespecial org.jruby.Main.<init>:(Lorg/jruby/RubyInstanceConfig;)V
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.argArray:[Ljava/lang/String;
invokevirtual org.jruby.Main.run:([Ljava/lang/String;)Lorg/jruby/Main$Status;
invokevirtual org.jruby.Main$Status.getStatus:()I
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.result:I
1: goto 17
StackMap locals:
StackMap stack: java.lang.Throwable
2: astore 1
start local 1 3: aload 1
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
invokevirtual java.lang.Throwable.printStackTrace:(Ljava/io/PrintStream;)V
4: aload 0
iconst_m1
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.result:I
end local 1 5: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.close:()V
6: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.close:()V
7: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getInput:()Ljava/io/InputStream;
invokevirtual java.io.InputStream.close:()V
8: goto 22
StackMap locals:
StackMap stack: java.io.IOException
9: pop
goto 22
10: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
11: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.close:()V
12: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.close:()V
13: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getInput:()Ljava/io/InputStream;
invokevirtual java.io.InputStream.close:()V
14: goto 16
StackMap locals: org.jruby.util.ShellLauncher$ScriptThreadProcess top java.lang.Throwable
StackMap stack: java.io.IOException
15: pop
16: StackMap locals:
StackMap stack:
aload 2
athrow
17: StackMap locals: org.jruby.util.ShellLauncher$ScriptThreadProcess
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.close:()V
18: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.close:()V
19: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getInput:()Ljava/io/InputStream;
invokevirtual java.io.InputStream.close:()V
20: goto 22
StackMap locals:
StackMap stack: java.io.IOException
21: pop
22: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
3 5 1 throwable Ljava/lang/Throwable;
Exception table:
from to target type
0 1 2 Class java.lang.Throwable
7 8 9 Class java.io.IOException
0 5 10 any
13 14 15 Class java.io.IOException
19 20 21 Class java.io.IOException
private static java.util.Map<java.lang.String, java.lang.String> environmentMap(java.lang.String[]);
descriptor: ([Ljava/lang/String;)Ljava/util/Map;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: new java.util.HashMap
dup
aload 0
arraylength
iconst_2
iadd
fconst_1
invokespecial java.util.HashMap.<init>:(IF)V
astore 1
start local 1 1: iconst_0
istore 2
start local 2 2: goto 6
3: StackMap locals: java.util.Map int
StackMap stack:
aload 0
iload 2
aaload
bipush 61
iconst_2
invokestatic org.jruby.util.StringSupport.split:(Ljava/lang/String;CI)Ljava/util/List;
astore 3
start local 3 4: aload 1
aload 3
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
aload 3
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 3 5: iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
aload 0
arraylength
if_icmplt 3
end local 2 7: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 env [Ljava/lang/String;
1 8 1 map Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
2 7 2 i I
4 5 3 kv Ljava/util/List<Ljava/lang/String;>;
Signature: ([Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
MethodParameters:
Name Flags
env
public void start();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=2, args_size=1
start local 0 0: aload 0
new org.jruby.RubyInstanceConfig
dup
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.parentRuntime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokespecial org.jruby.RubyInstanceConfig.<init>:(Lorg/jruby/RubyInstanceConfig;)V
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
1: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.pwd:Ljava/io/File;
invokevirtual java.io.File.toString:()Ljava/lang/String;
invokevirtual org.jruby.RubyInstanceConfig.setCurrentDirectory:(Ljava/lang/String;)V
2: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.env:[Ljava/lang/String;
invokestatic org.jruby.util.ShellLauncher$ScriptThreadProcess.environmentMap:([Ljava/lang/String;)Ljava/util/Map;
invokevirtual org.jruby.RubyInstanceConfig.setEnvironment:(Ljava/util/Map;)V
3: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.pipedStreams:Z
ifeq 7
4: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
new java.io.PipedInputStream
dup
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processInput:Ljava/io/PipedOutputStream;
invokespecial java.io.PipedInputStream.<init>:(Ljava/io/PipedOutputStream;)V
invokevirtual org.jruby.RubyInstanceConfig.setInput:(Ljava/io/InputStream;)V
5: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
new java.io.PrintStream
dup
new java.io.PipedOutputStream
dup
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processOutput:Ljava/io/PipedInputStream;
invokespecial java.io.PipedOutputStream.<init>:(Ljava/io/PipedInputStream;)V
invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
invokevirtual org.jruby.RubyInstanceConfig.setOutput:(Ljava/io/PrintStream;)V
6: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.config:Lorg/jruby/RubyInstanceConfig;
new java.io.PrintStream
dup
new java.io.PipedOutputStream
dup
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processError:Ljava/io/PipedInputStream;
invokespecial java.io.PipedOutputStream.<init>:(Ljava/io/PipedInputStream;)V
invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
invokevirtual org.jruby.RubyInstanceConfig.setError:(Ljava/io/PrintStream;)V
7: StackMap locals:
StackMap stack:
ldc "piped"
astore 1
start local 1 8: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.argArray:[Ljava/lang/String;
arraylength
ifle 10
9: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.argArray:[Ljava/lang/String;
iconst_0
aaload
astore 1
10: StackMap locals: java.lang.String
StackMap stack:
aload 0
new java.lang.Thread
dup
aload 0
new java.lang.StringBuilder
dup
ldc "ScriptThreadProcess: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;Ljava/lang/String;)V
putfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processThread:Ljava/lang/Thread;
11: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processThread:Ljava/lang/Thread;
iconst_1
invokevirtual java.lang.Thread.setDaemon:(Z)V
12: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.start:()V
13: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
8 14 1 procName Ljava/lang/String;
Exceptions:
throws java.io.IOException
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$ScriptThreadProcess.processInput:Ljava/io/PipedOutputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
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$ScriptThreadProcess.processOutput:Ljava/io/PipedInputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
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$ScriptThreadProcess.processError:Ljava/io/PipedInputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
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$ScriptThreadProcess.processThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.join:()V
1: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.result:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
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$ScriptThreadProcess.result:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
public void destroy();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.pipedStreams:Z
ifeq 2
1: aload 0
invokevirtual org.jruby.util.ShellLauncher$ScriptThreadProcess.closeStreams:()V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.interrupt:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
private void closeStreams();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processInput:Ljava/io/PipedOutputStream;
invokevirtual java.io.PipedOutputStream.close:()V
1: goto 3
StackMap locals:
StackMap stack: java.io.IOException
2: pop
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processOutput:Ljava/io/PipedInputStream;
invokevirtual java.io.PipedInputStream.close:()V
4: goto 6
StackMap locals:
StackMap stack: java.io.IOException
5: pop
6: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.util.ShellLauncher$ScriptThreadProcess.processError:Ljava/io/PipedInputStream;
invokevirtual java.io.PipedInputStream.close:()V
7: goto 9
StackMap locals:
StackMap stack: java.io.IOException
8: pop
9: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
Exception table:
from to target type
0 1 2 Class java.io.IOException
3 4 5 Class java.io.IOException
6 7 8 Class java.io.IOException
}
SourceFile: "ShellLauncher.java"
NestHost: org.jruby.util.ShellLauncher
InnerClasses:
public Status = org.jruby.Main$Status of org.jruby.Main
private ScriptThreadProcess = org.jruby.util.ShellLauncher$ScriptThreadProcess of org.jruby.util.ShellLauncher