public class org.jruby.Main
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.Main
super_class: java.lang.Object
{
private static final org.jruby.util.log.Logger LOG;
descriptor: Lorg/jruby/util/log/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final org.jruby.RubyInstanceConfig config;
descriptor: Lorg/jruby/RubyInstanceConfig;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/jruby/Main;
invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
putstatic org.jruby.Main.LOG:Lorg/jruby/util/log/Logger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.jruby.RubyInstanceConfig);
descriptor: (Lorg/jruby/RubyInstanceConfig;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
invokespecial org.jruby.Main.<init>:(Lorg/jruby/RubyInstanceConfig;Z)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/Main;
0 2 1 config Lorg/jruby/RubyInstanceConfig;
MethodParameters:
Name Flags
config
public void <init>(java.io.InputStream, java.io.PrintStream, java.io.PrintStream);
descriptor: (Ljava/io/InputStream;Ljava/io/PrintStream;Ljava/io/PrintStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
new org.jruby.RubyInstanceConfig
dup
aload 1
aload 2
aload 3
invokespecial org.jruby.RubyInstanceConfig.<init>:(Ljava/io/InputStream;Ljava/io/PrintStream;Ljava/io/PrintStream;)V
invokespecial org.jruby.Main.<init>:(Lorg/jruby/RubyInstanceConfig;)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/Main;
0 2 1 in Ljava/io/InputStream;
0 2 2 out Ljava/io/PrintStream;
0 2 3 err Ljava/io/PrintStream;
MethodParameters:
Name Flags
in final
out final
err final
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
new org.jruby.RubyInstanceConfig
dup
invokespecial org.jruby.RubyInstanceConfig.<init>:()V
invokespecial org.jruby.Main.<init>:(Lorg/jruby/RubyInstanceConfig;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jruby/Main;
private void <init>(org.jruby.RubyInstanceConfig, boolean);
descriptor: (Lorg/jruby/RubyInstanceConfig;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
2: aload 1
iload 2
invokevirtual org.jruby.RubyInstanceConfig.setHardExit:(Z)V
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/Main;
0 4 1 config Lorg/jruby/RubyInstanceConfig;
0 4 2 hardExit Z
MethodParameters:
Name Flags
config
hardExit
private void <init>(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: invokestatic org.jruby.Main.processDotfile:()V
2: aload 0
new org.jruby.RubyInstanceConfig
dup
invokespecial org.jruby.RubyInstanceConfig.<init>:()V
putfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
3: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
iload 1
invokevirtual org.jruby.RubyInstanceConfig.setHardExit:(Z)V
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/Main;
0 5 1 hardExit Z
MethodParameters:
Name Flags
hardExit
private static java.util.List<java.lang.String> getDotfileDirectories();
descriptor: ()Ljava/util/List;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=0
0: new java.util.ArrayList
dup
iconst_4
invokespecial java.util.ArrayList.<init>:(I)V
astore 0
start local 0 1: iconst_2
anewarray java.lang.String
dup
iconst_0
ldc "user.dir"
aastore
dup
iconst_1
ldc "user.home"
aastore
dup
astore 4
arraylength
istore 3
iconst_0
istore 2
goto 6
StackMap locals: java.util.ArrayList top int int java.lang.String[]
StackMap stack:
2: aload 4
iload 2
aaload
astore 1
start local 1 3: aload 1
invokestatic org.jruby.util.SafePropertyAccessor.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 5
start local 5 4: aload 5
ifnull 5
aload 0
aload 5
invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
pop
end local 5 end local 1 5: StackMap locals:
StackMap stack:
iinc 2 1
StackMap locals:
StackMap stack:
6: iload 2
iload 3
if_icmplt 2
7: getstatic org.jruby.platform.Platform.IS_WINDOWS:Z
ifeq 12
8: ldc "HOMEDRIVE"
invokestatic java.lang.System.getenv:(Ljava/lang/String;)Ljava/lang/String;
astore 1
start local 1 9: ldc "HOMEPATH"
invokestatic java.lang.System.getenv:(Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 10: aload 1
ifnull 12
aload 2
ifnull 12
11: aload 0
iconst_1
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
bipush 92
bipush 47
invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
invokevirtual java.util.ArrayList.add:(ILjava/lang/Object;)V
end local 2 end local 1 12: StackMap locals: java.util.ArrayList
StackMap stack:
aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 13 0 searchList Ljava/util/ArrayList<Ljava/lang/String;>;
3 5 1 homeProp Ljava/lang/String;
4 5 5 home Ljava/lang/String;
9 12 1 homeDrive Ljava/lang/String;
10 12 2 homePath Ljava/lang/String;
Signature: ()Ljava/util/List<Ljava/lang/String;>;
public static void processDotfile();
descriptor: ()V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=4, args_size=0
0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 0
start local 0 1: invokestatic org.jruby.Main.getDotfileDirectories:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 2
goto 7
StackMap locals: java.lang.StringBuilder top java.util.Iterator
StackMap stack:
2: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 1
start local 1 3: aload 0
iconst_0
invokevirtual java.lang.StringBuilder.setLength:(I)V
4: aload 0
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "/.jrubyrc"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
5: new java.io.File
dup
aload 0
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
astore 3
start local 3 6: aload 3
invokevirtual java.io.File.exists:()Z
ifeq 7
aload 3
invokestatic org.jruby.Main.loadJRubyProperties:(Ljava/io/File;)V
end local 3 end local 1 7: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
8: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
1 9 0 path Ljava/lang/StringBuilder;
3 7 1 home Ljava/lang/String;
6 7 3 dotfile Ljava/io/File;
private static void loadJRubyProperties(java.io.File);
descriptor: (Ljava/io/File;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: invokestatic java.lang.System.getProperties:()Ljava/util/Properties;
astore 2
start local 2 2: new java.util.Properties
dup
invokespecial java.util.Properties.<init>:()V
astore 3
start local 3 3: new java.io.FileInputStream
dup
aload 0
invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
astore 1
4: aload 3
aload 1
invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
5: aload 3
invokevirtual java.util.Properties.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 5
goto 8
StackMap locals: java.io.File java.io.FileInputStream java.util.Properties java.util.Properties top java.util.Iterator
StackMap stack:
6: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 4
start local 4 7: aload 2
new java.lang.StringBuilder
dup
ldc "jruby."
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 4
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 4 8: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 3 end local 2 9: goto 22
10: StackMap locals: java.io.File java.io.FileInputStream
StackMap stack: java.lang.Exception
astore 2
start local 2 11: getstatic org.jruby.Main.LOG:Lorg/jruby/util/log/Logger;
invokeinterface org.jruby.util.log.Logger.isDebugEnabled:()Z
ifeq 12
getstatic org.jruby.Main.LOG:Lorg/jruby/util/log/Logger;
new java.lang.StringBuilder
dup
ldc "exception loading properties from: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
end local 2 12: StackMap locals:
StackMap stack:
aload 1
ifnull 26
13: aload 1
invokevirtual java.io.FileInputStream.close:()V
14: goto 26
StackMap locals:
StackMap stack: java.lang.Exception
15: pop
goto 26
16: StackMap locals:
StackMap stack: java.lang.Throwable
astore 6
17: aload 1
ifnull 21
18: aload 1
invokevirtual java.io.FileInputStream.close:()V
19: goto 21
StackMap locals: java.io.File java.io.FileInputStream top top top top java.lang.Throwable
StackMap stack: java.lang.Exception
20: pop
21: StackMap locals:
StackMap stack:
aload 6
athrow
22: StackMap locals: java.io.File java.io.FileInputStream
StackMap stack:
aload 1
ifnull 26
23: aload 1
invokevirtual java.io.FileInputStream.close:()V
24: goto 26
StackMap locals:
StackMap stack: java.lang.Exception
25: pop
26: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 dotfile Ljava/io/File;
1 27 1 fis Ljava/io/FileInputStream;
2 9 2 sysProps Ljava/util/Properties;
3 9 3 newProps Ljava/util/Properties;
7 8 4 entry Ljava/util/Map$Entry;
11 12 2 ex Ljava/lang/Exception;
Exception table:
from to target type
1 9 10 Class java.io.IOException
1 9 10 Class java.lang.SecurityException
13 14 15 Class java.lang.Exception
1 12 16 any
18 19 20 Class java.lang.Exception
23 24 25 Class java.lang.Exception
MethodParameters:
Name Flags
dotfile
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: invokestatic org.jruby.Main.doGCJCheck:()V
1: getstatic org.jruby.main.DripMain.DRIP_RUNTIME:Lorg/jruby/Ruby;
ifnull 4
2: new org.jruby.Main
dup
getstatic org.jruby.main.DripMain.DRIP_CONFIG:Lorg/jruby/RubyInstanceConfig;
iconst_1
invokespecial org.jruby.Main.<init>:(Lorg/jruby/RubyInstanceConfig;Z)V
astore 1
start local 1 3: goto 5
end local 1 4: StackMap locals:
StackMap stack:
new org.jruby.Main
dup
iconst_1
invokespecial org.jruby.Main.<init>:(Z)V
astore 1
start local 1 5: StackMap locals: org.jruby.Main
StackMap stack:
aload 1
aload 0
invokevirtual org.jruby.Main.run:([Ljava/lang/String;)Lorg/jruby/Main$Status;
astore 2
start local 2 6: aload 2
invokevirtual org.jruby.Main$Status.isExit:()Z
ifeq 23
7: aload 2
invokevirtual org.jruby.Main$Status.getStatus:()I
invokestatic java.lang.System.exit:(I)V
end local 2 8: goto 23
9: StackMap locals:
StackMap stack: org.jruby.exceptions.RaiseException
astore 2
start local 2 10: aload 2
invokestatic org.jruby.Main.handleRaiseException:(Lorg/jruby/exceptions/RaiseException;)I
invokestatic java.lang.System.exit:(I)V
end local 2 11: goto 23
12: StackMap locals:
StackMap stack: org.jruby.exceptions.JumpException
astore 2
start local 2 13: aload 2
invokestatic org.jruby.Main.handleUnexpectedJump:(Lorg/jruby/exceptions/JumpException;)I
invokestatic java.lang.System.exit:(I)V
end local 2 14: goto 23
15: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
start local 2 16: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Unhandled Java exception: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
17: getstatic java.lang.System.err:Ljava/io/PrintStream;
aload 2
iconst_0
invokestatic org.jruby.runtime.ThreadContext.createRawBacktraceStringFromThrowable:(Ljava/lang/Throwable;Z)Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
18: goto 21
19: StackMap locals: java.lang.Throwable
StackMap stack:
getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Caused by:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
20: getstatic java.lang.System.err:Ljava/io/PrintStream;
aload 2
iconst_0
invokestatic org.jruby.runtime.ThreadContext.createRawBacktraceStringFromThrowable:(Ljava/lang/Throwable;Z)Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
21: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
dup
astore 2
ifnonnull 19
22: iconst_1
invokestatic java.lang.System.exit:(I)V
end local 2 23: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 args [Ljava/lang/String;
3 4 1 main Lorg/jruby/Main;
5 24 1 main Lorg/jruby/Main;
6 8 2 status Lorg/jruby/Main$Status;
10 11 2 ex Lorg/jruby/exceptions/RaiseException;
13 14 2 ex Lorg/jruby/exceptions/JumpException;
16 23 2 t Ljava/lang/Throwable;
Exception table:
from to target type
5 8 9 Class org.jruby.exceptions.RaiseException
5 8 12 Class org.jruby.exceptions.JumpException
5 8 15 Class java.lang.Throwable
MethodParameters:
Name Flags
args
public org.jruby.Main$Status run(java.lang.String[]);
descriptor: ([Ljava/lang/String;)Lorg/jruby/Main$Status;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
aload 1
invokevirtual org.jruby.RubyInstanceConfig.processArguments:([Ljava/lang/String;)V
1: aload 0
invokevirtual org.jruby.Main.internalRun:()Lorg/jruby/Main$Status;
2: areturn
3: StackMap locals:
StackMap stack: org.jruby.exceptions.MainExitException
astore 2
start local 2 4: aload 0
aload 2
invokevirtual org.jruby.Main.handleMainExit:(Lorg/jruby/exceptions/MainExitException;)Lorg/jruby/Main$Status;
areturn
end local 2 5: StackMap locals:
StackMap stack: java.lang.OutOfMemoryError
astore 2
start local 2 6: aload 0
aload 2
invokevirtual org.jruby.Main.handleOutOfMemory:(Ljava/lang/OutOfMemoryError;)Lorg/jruby/Main$Status;
areturn
end local 2 7: StackMap locals:
StackMap stack: java.lang.StackOverflowError
astore 2
start local 2 8: aload 0
aload 2
invokevirtual org.jruby.Main.handleStackOverflow:(Ljava/lang/StackOverflowError;)Lorg/jruby/Main$Status;
areturn
end local 2 9: StackMap locals:
StackMap stack: java.lang.UnsupportedClassVersionError
astore 2
start local 2 10: aload 0
aload 2
invokevirtual org.jruby.Main.handleUnsupportedClassVersion:(Ljava/lang/UnsupportedClassVersionError;)Lorg/jruby/Main$Status;
areturn
end local 2 11: StackMap locals:
StackMap stack: org.jruby.exceptions.ThreadKill
pop
12: new org.jruby.Main$Status
dup
invokespecial org.jruby.Main$Status.<init>:()V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/jruby/Main;
0 13 1 args [Ljava/lang/String;
4 5 2 mee Lorg/jruby/exceptions/MainExitException;
6 7 2 oome Ljava/lang/OutOfMemoryError;
8 9 2 soe Ljava/lang/StackOverflowError;
10 11 2 ucve Ljava/lang/UnsupportedClassVersionError;
Exception table:
from to target type
0 2 3 Class org.jruby.exceptions.MainExitException
0 2 5 Class java.lang.OutOfMemoryError
0 2 7 Class java.lang.StackOverflowError
0 2 9 Class java.lang.UnsupportedClassVersionError
0 2 11 Class org.jruby.exceptions.ThreadKill
MethodParameters:
Name Flags
args
public org.jruby.Main$Status run();
descriptor: ()Lorg/jruby/Main$Status;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.Main.internalRun:()Lorg/jruby/Main$Status;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/Main;
RuntimeVisibleAnnotations:
java.lang.Deprecated()
private org.jruby.Main$Status internalRun();
descriptor: ()Lorg/jruby/Main$Status;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=8, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.Main.doShowVersion:()V
1: aload 0
invokevirtual org.jruby.Main.doShowCopyright:()V
2: aload 0
invokevirtual org.jruby.Main.doPrintProperties:()V
3: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getShouldRunInterpreter:()Z
ifne 6
4: aload 0
iconst_0
invokevirtual org.jruby.Main.doPrintUsage:(Z)V
5: new org.jruby.Main$Status
dup
invokespecial org.jruby.Main$Status.<init>:()V
areturn
6: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getScriptSource:()Ljava/io/InputStream;
astore 1
start local 1 7: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.displayedFileName:()Ljava/lang/String;
astore 2
start local 2 8: getstatic org.jruby.main.DripMain.DRIP_RUNTIME:Lorg/jruby/Ruby;
ifnull 12
9: getstatic org.jruby.main.DripMain.DRIP_RUNTIME:Lorg/jruby/Ruby;
astore 3
start local 3 10: aload 3
iconst_1
invokevirtual org.jruby.Ruby.reinitialize:(Z)V
11: goto 13
end local 3 12: StackMap locals: java.io.InputStream java.lang.String
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokestatic org.jruby.Ruby.newInstance:(Lorg/jruby/RubyInstanceConfig;)Lorg/jruby/Ruby;
astore 3
start local 3 13: StackMap locals: org.jruby.Ruby
StackMap stack:
aload 3
astore 4
start local 4 14: new java.util.concurrent.atomic.AtomicBoolean
dup
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
astore 5
start local 5 15: aload 4
ifnull 17
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isHardExit:()Z
ifeq 17
16: invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
new org.jruby.Main$1
dup
aload 0
aload 5
aload 4
invokespecial org.jruby.Main$1.<init>:(Lorg/jruby/Main;Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/jruby/Ruby;)V
invokevirtual java.lang.Runtime.addShutdownHook:(Ljava/lang/Thread;)V
17: StackMap locals: org.jruby.Ruby java.util.concurrent.atomic.AtomicBoolean
StackMap stack:
aload 4
ifnull 19
18: aload 0
aload 4
invokevirtual org.jruby.Main.doSetContextClassLoader:(Lorg/jruby/Ruby;)V
19: StackMap locals:
StackMap stack:
aload 1
ifnonnull 24
20: new org.jruby.Main$Status
dup
invokespecial org.jruby.Main$Status.<init>:()V
astore 7
21: aload 4
ifnull 23
aload 5
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 23
22: aload 4
invokevirtual org.jruby.Ruby.tearDown:()V
23: StackMap locals: org.jruby.Main java.io.InputStream java.lang.String org.jruby.Ruby org.jruby.Ruby java.util.concurrent.atomic.AtomicBoolean top org.jruby.Main$Status
StackMap stack:
aload 7
areturn
24: StackMap locals: org.jruby.Main java.io.InputStream java.lang.String org.jruby.Ruby org.jruby.Ruby java.util.concurrent.atomic.AtomicBoolean
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getShouldCheckSyntax:()Z
ifeq 29
25: aload 0
aload 4
aload 1
aload 2
invokevirtual org.jruby.Main.doCheckSyntax:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/lang/String;)Lorg/jruby/Main$Status;
astore 7
26: aload 4
ifnull 28
aload 5
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 28
27: aload 4
invokevirtual org.jruby.Ruby.tearDown:()V
28: StackMap locals: org.jruby.Main java.io.InputStream java.lang.String org.jruby.Ruby org.jruby.Ruby java.util.concurrent.atomic.AtomicBoolean top org.jruby.Main$Status
StackMap stack:
aload 7
areturn
29: StackMap locals: org.jruby.Main java.io.InputStream java.lang.String org.jruby.Ruby org.jruby.Ruby java.util.concurrent.atomic.AtomicBoolean
StackMap stack:
aload 0
aload 4
aload 1
aload 2
invokevirtual org.jruby.Main.doRunFromMain:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/lang/String;)Lorg/jruby/Main$Status;
astore 7
30: aload 4
ifnull 32
aload 5
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 32
31: aload 4
invokevirtual org.jruby.Ruby.tearDown:()V
32: StackMap locals: org.jruby.Main java.io.InputStream java.lang.String org.jruby.Ruby org.jruby.Ruby java.util.concurrent.atomic.AtomicBoolean top org.jruby.Main$Status
StackMap stack:
aload 7
areturn
33: StackMap locals: org.jruby.Main java.io.InputStream java.lang.String org.jruby.Ruby org.jruby.Ruby java.util.concurrent.atomic.AtomicBoolean
StackMap stack: java.lang.Throwable
astore 6
34: aload 4
ifnull 36
aload 5
iconst_0
iconst_1
invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
ifeq 36
35: aload 4
invokevirtual org.jruby.Ruby.tearDown:()V
36: StackMap locals: java.lang.Throwable
StackMap stack:
aload 6
athrow
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 37 0 this Lorg/jruby/Main;
7 37 1 in Ljava/io/InputStream;
8 37 2 filename Ljava/lang/String;
10 12 3 _runtime Lorg/jruby/Ruby;
13 37 3 _runtime Lorg/jruby/Ruby;
14 37 4 runtime Lorg/jruby/Ruby;
15 37 5 didTeardown Ljava/util/concurrent/atomic/AtomicBoolean;
Exception table:
from to target type
17 21 33 any
24 26 33 any
29 30 33 any
private org.jruby.Main$Status handleUnsupportedClassVersion(java.lang.UnsupportedClassVersionError);
descriptor: (Ljava/lang/UnsupportedClassVersionError;)Lorg/jruby/Main$Status;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
ldc "Error: Some library (perhaps JRuby) was built with a later JVM version."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
1: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
ldc "Please use libraries built with the version you intend to use or an earlier one."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
2: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 5
3: aload 1
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
invokevirtual java.lang.UnsupportedClassVersionError.printStackTrace:(Ljava/io/PrintStream;)V
4: goto 6
5: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Specify -w for full "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " stack trace"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
6: StackMap locals:
StackMap stack:
new org.jruby.Main$Status
dup
iconst_1
invokespecial org.jruby.Main$Status.<init>:(I)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/Main;
0 7 1 ex Ljava/lang/UnsupportedClassVersionError;
MethodParameters:
Name Flags
ex
private org.jruby.Main$Status handleStackOverflow(java.lang.StackOverflowError);
descriptor: (Ljava/lang/StackOverflowError;)Lorg/jruby/Main$Status;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
ldc "-Xss"
invokevirtual org.jruby.Main.getRuntimeFlagValue:(Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 1: aload 2
ifnull 4
2: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Error: Your application used more stack memory than the safety cap of "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
bipush 46
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
3: goto 5
4: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
ldc "Error: Your application used more stack memory than the default safety cap."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
5: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
ldc "Specify -J-Xss####k to increase it (#### = cap size in KB)."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
6: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 9
7: aload 1
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
invokevirtual java.lang.StackOverflowError.printStackTrace:(Ljava/io/PrintStream;)V
8: goto 10
9: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Specify -w for full "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " stack trace"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
10: StackMap locals:
StackMap stack:
new org.jruby.Main$Status
dup
iconst_1
invokespecial org.jruby.Main$Status.<init>:(I)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/jruby/Main;
0 11 1 ex Ljava/lang/StackOverflowError;
1 11 2 memoryMax Ljava/lang/String;
MethodParameters:
Name Flags
ex
private org.jruby.Main$Status handleOutOfMemory(java.lang.OutOfMemoryError);
descriptor: (Ljava/lang/OutOfMemoryError;)Lorg/jruby/Main$Status;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=5, args_size=2
start local 0 start local 1 0: invokestatic java.lang.System.gc:()V
1: aload 1
invokevirtual java.lang.OutOfMemoryError.getMessage:()Ljava/lang/String;
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: aload 2
ifnull 9
4: aload 2
ldc "unable to create new native thread"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 8
5: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
ldc "Error: Your application demanded too many live threads, perhaps for Fiber or Enumerator."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
6: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
ldc "Ensure your old Fibers and Enumerators are being cleaned up."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
7: goto 9
8: StackMap locals: java.lang.String int
StackMap stack:
iconst_1
istore 3
9: StackMap locals:
StackMap stack:
iload 3
ifeq 16
10: aload 0
ldc "-Xmx"
invokevirtual org.jruby.Main.getRuntimeFlagValue:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 11: aload 4
ifnull 14
12: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Error: Your application used more memory than the safety cap of "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
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;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
13: goto 15
14: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Error: Your application used more memory than the automatic cap of "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.maxMemory:()J
ldc 1024
ldiv
ldc 1024
ldiv
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "MB."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
15: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
ldc "Specify -J-Xmx####M to increase it (#### = cap size in MB)."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
end local 4 16: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 19
17: aload 1
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
invokevirtual java.lang.OutOfMemoryError.printStackTrace:(Ljava/io/PrintStream;)V
18: goto 20
19: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Specify -w for full "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " stack trace"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
20: StackMap locals:
StackMap stack:
new org.jruby.Main$Status
dup
iconst_1
invokespecial org.jruby.Main$Status.<init>:(I)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/jruby/Main;
0 21 1 ex Ljava/lang/OutOfMemoryError;
2 21 2 oomeMessage Ljava/lang/String;
3 21 3 heapError Z
11 16 4 memoryMax Ljava/lang/String;
MethodParameters:
Name Flags
ex
private java.lang.String getRuntimeFlagValue(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: invokestatic java.lang.management.ManagementFactory.getRuntimeMXBean:()Ljava/lang/management/RuntimeMXBean;
astore 2
start local 2 1: aload 2
invokeinterface java.lang.management.RuntimeMXBean.getInputArguments:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 5
StackMap locals: org.jruby.Main java.lang.String java.lang.management.RuntimeMXBean top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 3
start local 3 3: aload 3
aload 1
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 5
4: aload 3
aload 1
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokevirtual java.lang.String.toUpperCase:()Ljava/lang/String;
areturn
end local 3 5: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
6: aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/Main;
0 7 1 prefix Ljava/lang/String;
1 7 2 runtime Ljava/lang/management/RuntimeMXBean;
3 5 3 param Ljava/lang/String;
MethodParameters:
Name Flags
prefix
private org.jruby.Main$Status handleMainExit(org.jruby.exceptions.MainExitException);
descriptor: (Lorg/jruby/exceptions/MainExitException;)Lorg/jruby/Main$Status;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual org.jruby.exceptions.MainExitException.isAborted:()Z
ifne 4
1: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
aload 1
invokevirtual org.jruby.exceptions.MainExitException.getMessage:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
2: aload 1
invokevirtual org.jruby.exceptions.MainExitException.isUsageError:()Z
ifeq 4
3: aload 0
iconst_1
invokevirtual org.jruby.Main.doPrintUsage:(Z)V
4: StackMap locals:
StackMap stack:
new org.jruby.Main$Status
dup
aload 1
invokevirtual org.jruby.exceptions.MainExitException.getStatus:()I
invokespecial org.jruby.Main$Status.<init>:(I)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/jruby/Main;
0 5 1 mee Lorg/jruby/exceptions/MainExitException;
MethodParameters:
Name Flags
mee
private org.jruby.Main$Status doRunFromMain(org.jruby.Ruby, java.io.InputStream, java.lang.String);
descriptor: (Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/lang/String;)Lorg/jruby/Main$Status;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual org.jruby.Main.doCheckSecurityManager:()V
1: aload 1
aload 2
aload 3
invokevirtual org.jruby.Ruby.runFromMain:(Ljava/io/InputStream;Ljava/lang/String;)V
2: goto 5
StackMap locals:
StackMap stack: org.jruby.exceptions.RaiseException
3: astore 4
start local 4 4: new org.jruby.Main$Status
dup
aload 4
invokestatic org.jruby.Main.handleRaiseException:(Lorg/jruby/exceptions/RaiseException;)I
invokespecial org.jruby.Main$Status.<init>:(I)V
areturn
end local 4 5: StackMap locals:
StackMap stack:
new org.jruby.Main$Status
dup
invokespecial org.jruby.Main$Status.<init>:()V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/Main;
0 6 1 runtime Lorg/jruby/Ruby;
0 6 2 in Ljava/io/InputStream;
0 6 3 filename Ljava/lang/String;
4 5 4 rj Lorg/jruby/exceptions/RaiseException;
Exception table:
from to target type
0 2 3 Class org.jruby.exceptions.RaiseException
MethodParameters:
Name Flags
runtime
in
filename
private org.jruby.Main$Status doCheckSyntax(org.jruby.Ruby, java.io.InputStream, java.lang.String);
descriptor: (Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/lang/String;)Lorg/jruby/Main$Status;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, 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.Main.checkStreamSyntax:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/lang/String;)Z
istore 4
start local 4 1: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getArgv:()[Ljava/lang/String;
dup
astore 8
arraylength
istore 7
iconst_0
istore 6
goto 7
StackMap locals: org.jruby.Main org.jruby.Ruby java.io.InputStream java.lang.String int top int int java.lang.String[]
StackMap stack:
2: aload 8
iload 6
aaload
astore 5
start local 5 3: iload 4
ifeq 4
aload 0
aload 1
aload 5
invokevirtual org.jruby.Main.checkFileSyntax:(Lorg/jruby/Ruby;Ljava/lang/String;)Z
ifeq 4
iconst_1
goto 5
StackMap locals: org.jruby.Main org.jruby.Ruby java.io.InputStream java.lang.String int java.lang.String int int java.lang.String[]
StackMap stack:
4: iconst_0
StackMap locals:
StackMap stack: int
5: istore 4
end local 5 6: iinc 6 1
StackMap locals: org.jruby.Main org.jruby.Ruby java.io.InputStream java.lang.String int top int int java.lang.String[]
StackMap stack:
7: iload 6
iload 7
if_icmplt 2
8: new org.jruby.Main$Status
dup
iload 4
ifeq 9
iconst_0
goto 10
StackMap locals: org.jruby.Main org.jruby.Ruby java.io.InputStream java.lang.String int
StackMap stack: new 8 new 8
9: iconst_m1
StackMap locals: org.jruby.Main org.jruby.Ruby java.io.InputStream java.lang.String int
StackMap stack: new 8 new 8 int
10: invokespecial org.jruby.Main$Status.<init>:(I)V
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/jruby/Main;
0 11 1 runtime Lorg/jruby/Ruby;
0 11 2 in Ljava/io/InputStream;
0 11 3 filename Ljava/lang/String;
1 11 4 status Z
3 6 5 arg Ljava/lang/String;
Exceptions:
throws org.jruby.exceptions.RaiseException
MethodParameters:
Name Flags
runtime
in
filename
private boolean checkFileSyntax(org.jruby.Ruby, java.lang.String);
descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: new java.io.File
dup
aload 2
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
astore 3
start local 3 1: aload 3
invokevirtual java.io.File.exists:()Z
ifeq 7
2: aload 0
aload 1
new java.io.FileInputStream
dup
aload 3
invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
aload 2
invokevirtual org.jruby.Main.checkStreamSyntax:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/lang/String;)Z
3: ireturn
4: StackMap locals: org.jruby.Main org.jruby.Ruby java.lang.String java.io.File
StackMap stack: java.io.FileNotFoundException
pop
5: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "File not found: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
6: iconst_0
ireturn
7: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/jruby/Main;
0 8 1 runtime Lorg/jruby/Ruby;
0 8 2 filename Ljava/lang/String;
1 8 3 file Ljava/io/File;
Exception table:
from to target type
2 3 4 Class java.io.FileNotFoundException
MethodParameters:
Name Flags
runtime
filename
private boolean checkStreamSyntax(org.jruby.Ruby, java.io.InputStream, java.lang.String);
descriptor: (Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/lang/String;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
astore 4
start local 4 1: aload 4
invokevirtual org.jruby.runtime.ThreadContext.getErrorInfo:()Lorg/jruby/runtime/builtin/IRubyObject;
astore 5
start local 5 2: aload 1
aload 2
aload 3
invokevirtual org.jruby.Ruby.parseFromMain:(Ljava/io/InputStream;Ljava/lang/String;)Lorg/jruby/ast/Node;
pop
3: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
ldc "Syntax OK"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
4: iconst_1
ireturn
5: StackMap locals: org.jruby.Main org.jruby.Ruby java.io.InputStream java.lang.String org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject
StackMap stack: org.jruby.exceptions.RaiseException
astore 6
start local 6 6: aload 6
invokevirtual org.jruby.exceptions.RaiseException.getException:()Lorg/jruby/RubyException;
invokevirtual org.jruby.RubyException.getMetaClass:()Lorg/jruby/RubyClass;
invokevirtual org.jruby.RubyClass.getBaseName:()Ljava/lang/String;
ldc "SyntaxError"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
7: aload 4
aload 5
invokevirtual org.jruby.runtime.ThreadContext.setErrorInfo:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
pop
8: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "SyntaxError in "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual org.jruby.exceptions.RaiseException.getException:()Lorg/jruby/RubyException;
aload 4
invokevirtual org.jruby.RubyException.message:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
9: iconst_0
ireturn
10: StackMap locals: org.jruby.exceptions.RaiseException
StackMap stack:
aload 6
athrow
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 11 0 this Lorg/jruby/Main;
0 11 1 runtime Lorg/jruby/Ruby;
0 11 2 in Ljava/io/InputStream;
0 11 3 filename Ljava/lang/String;
1 11 4 context Lorg/jruby/runtime/ThreadContext;
2 11 5 $ex Lorg/jruby/runtime/builtin/IRubyObject;
6 11 6 re Lorg/jruby/exceptions/RaiseException;
Exception table:
from to target type
2 4 5 Class org.jruby.exceptions.RaiseException
MethodParameters:
Name Flags
runtime
in
filename
private void doSetContextClassLoader(org.jruby.Ruby);
descriptor: (Lorg/jruby/Ruby;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
aload 1
invokevirtual org.jruby.Ruby.getJRubyClassLoader:()Lorg/jruby/util/JRubyClassLoader;
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
1: goto 5
StackMap locals:
StackMap stack: java.lang.SecurityException
2: pop
3: aload 1
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 5
4: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getError:()Ljava/io/PrintStream;
ldc "WARNING: Security restrictions disallowed setting context classloader for main thread."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
5: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/Main;
0 6 1 runtime Lorg/jruby/Ruby;
Exception table:
from to target type
0 1 2 Class java.lang.SecurityException
MethodParameters:
Name Flags
runtime
private void doPrintProperties();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getShouldPrintProperties:()Z
ifeq 2
1: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
invokestatic org.jruby.util.cli.OutputStrings.getPropertyHelp:()Ljava/lang/String;
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/Main;
private void doPrintUsage(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getShouldPrintUsage:()Z
ifne 1
iload 1
ifeq 3
1: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
invokestatic org.jruby.util.cli.OutputStrings.getBasicUsageHelp:()Ljava/lang/String;
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
2: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
invokestatic org.jruby.util.cli.OutputStrings.getFeaturesHelp:()Ljava/lang/String;
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
3: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/Main;
0 4 1 force Z
MethodParameters:
Name Flags
force
private void doShowCopyright();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isShowCopyright:()Z
ifeq 2
1: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
invokestatic org.jruby.util.cli.OutputStrings.getCopyrightString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/Main;
private void doShowVersion();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isShowVersion:()Z
ifeq 2
1: aload 0
getfield org.jruby.Main.config:Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getOutput:()Ljava/io/PrintStream;
invokestatic org.jruby.util.cli.OutputStrings.getVersionString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/Main;
private static void doGCJCheck();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: getstatic org.jruby.platform.Platform.IS_GCJ:Z
ifeq 3
1: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Fatal: GCJ (GNU Compiler for Java) is not supported by JRuby."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
2: iconst_1
invokestatic java.lang.System.exit:(I)V
3: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
private void doCheckSecurityManager();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: ldc Lorg/jruby/Main;
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
ifnonnull 2
invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
ifnull 2
1: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Warning: security manager and JRuby running from boot classpath.\nRun from jruby.jar or set env VERIFY_JRUBY=true to enable security."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/Main;
protected static int handleRaiseException(org.jruby.exceptions.RaiseException);
descriptor: (Lorg/jruby/exceptions/RaiseException;)I
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=5, locals=4, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.exceptions.RaiseException.getException:()Lorg/jruby/RubyException;
astore 1
start local 1 1: aload 1
invokevirtual org.jruby.RubyException.getRuntime:()Lorg/jruby/Ruby;
astore 2
start local 2 2: aload 2
invokevirtual org.jruby.Ruby.getSystemExit:()Lorg/jruby/RubyClass;
aload 1
invokevirtual org.jruby.RubyClass.isInstance:(Lorg/jruby/runtime/builtin/IRubyObject;)Z
ifeq 7
3: aload 1
aload 2
invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
ldc "status"
invokevirtual org.jruby.RubyException.callMethod:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
astore 3
start local 3 4: aload 3
ifnull 6
aload 3
invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
ifne 6
5: aload 3
invokestatic org.jruby.RubyNumeric.fix2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
ireturn
6: StackMap locals: org.jruby.RubyException org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject
StackMap stack:
iconst_0
ireturn
end local 3 7: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.jruby.Ruby.getSignalException:()Lorg/jruby/RubyClass;
aload 1
invokevirtual org.jruby.RubyClass.isInstance:(Lorg/jruby/runtime/builtin/IRubyObject;)Z
ifeq 12
8: aload 1
aload 2
invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
ldc "signo"
invokevirtual org.jruby.RubyException.callMethod:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
astore 3
start local 3 9: aload 3
ifnull 11
aload 3
invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
ifne 11
10: aload 3
invokestatic org.jruby.RubyNumeric.fix2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
sipush 128
iadd
ireturn
11: StackMap locals: org.jruby.runtime.builtin.IRubyObject
StackMap stack:
iconst_0
ireturn
end local 3 12: StackMap locals:
StackMap stack:
getstatic java.lang.System.err:Ljava/io/PrintStream;
aload 2
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.getTraceType:()Lorg/jruby/runtime/backtrace/TraceType;
aload 1
aload 2
invokevirtual org.jruby.Ruby.getPosix:()Ljnr/posix/POSIX;
getstatic java.io.FileDescriptor.err:Ljava/io/FileDescriptor;
invokeinterface jnr.posix.POSIX.isatty:(Ljava/io/FileDescriptor;)Z
invokevirtual org.jruby.runtime.backtrace.TraceType.printBacktrace:(Lorg/jruby/RubyException;Z)Ljava/lang/String;
invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
13: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 ex Lorg/jruby/exceptions/RaiseException;
1 14 1 raisedException Lorg/jruby/RubyException;
2 14 2 runtime Lorg/jruby/Ruby;
4 7 3 status Lorg/jruby/runtime/builtin/IRubyObject;
9 12 3 status Lorg/jruby/runtime/builtin/IRubyObject;
MethodParameters:
Name Flags
ex final
private static int handleUnexpectedJump(org.jruby.exceptions.JumpException);
descriptor: (Lorg/jruby/exceptions/JumpException;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: aload 0
instanceof org.jruby.exceptions.JumpException$SpecialJump
ifeq 3
1: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Unexpected break: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
2: goto 12
3: StackMap locals:
StackMap stack:
aload 0
instanceof org.jruby.exceptions.JumpException$FlowControlException
ifeq 11
4: invokestatic org.jruby.Ruby.isGlobalRuntimeReady:()Z
ifeq 9
5: invokestatic org.jruby.Ruby.getGlobalRuntime:()Lorg/jruby/Ruby;
astore 1
start local 1 6: aload 0
checkcast org.jruby.exceptions.JumpException$FlowControlException
aload 1
invokevirtual org.jruby.exceptions.JumpException$FlowControlException.buildException:(Lorg/jruby/Ruby;)Lorg/jruby/exceptions/RaiseException;
astore 2
start local 2 7: aload 2
ifnull 12
aload 2
invokestatic org.jruby.Main.handleRaiseException:(Lorg/jruby/exceptions/RaiseException;)I
pop
end local 2 end local 1 8: goto 12
9: StackMap locals:
StackMap stack:
getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Unexpected jump: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
10: goto 12
11: StackMap locals:
StackMap stack:
getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Unexpected: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
12: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.jruby.exceptions.JumpException.getStackTrace:()[Ljava/lang/StackTraceElement;
astore 1
start local 1 13: aload 1
ifnull 16
aload 1
arraylength
ifle 16
14: getstatic java.lang.System.err:Ljava/io/PrintStream;
aload 0
iconst_0
invokestatic org.jruby.runtime.ThreadContext.createRawBacktraceStringFromThrowable:(Ljava/lang/Throwable;Z)Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
15: goto 17
16: StackMap locals: java.lang.StackTraceElement[]
StackMap stack:
getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "HINT: to get backtrace for jump exceptions run with -Xjump.backtrace=true"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
17: StackMap locals:
StackMap stack:
iconst_2
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 ex Lorg/jruby/exceptions/JumpException;
6 8 1 runtime Lorg/jruby/Ruby;
7 8 2 raise Lorg/jruby/exceptions/RaiseException;
13 18 1 trace [Ljava/lang/StackTraceElement;
MethodParameters:
Name Flags
ex final
}
SourceFile: "Main.java"
NestMembers:
org.jruby.Main$1 org.jruby.Main$Status
InnerClasses:
public abstract Entry = java.util.Map$Entry of java.util.Map
org.jruby.Main$1
public Status = org.jruby.Main$Status of org.jruby.Main
public FlowControlException = org.jruby.exceptions.JumpException$FlowControlException of org.jruby.exceptions.JumpException
public SpecialJump = org.jruby.exceptions.JumpException$SpecialJump of org.jruby.exceptions.JumpException