public class org.jruby.internal.runtime.RubyRunnable implements org.jruby.internal.runtime.ThreadedRunnable
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jruby.internal.runtime.RubyRunnable
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.Ruby runtime;
descriptor: Lorg/jruby/Ruby;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.jruby.RubyProc proc;
descriptor: Lorg/jruby/RubyProc;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.jruby.runtime.builtin.IRubyObject[] arguments;
descriptor: [Lorg/jruby/runtime/builtin/IRubyObject;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.jruby.RubyThread rubyThread;
descriptor: Lorg/jruby/RubyThread;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.lang.Thread javaThread;
descriptor: Ljava/lang/Thread;
flags: (0x0002) ACC_PRIVATE
private static boolean warnedAboutTC;
descriptor: Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/jruby/internal/runtime/RubyRunnable;
invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
putstatic org.jruby.internal.runtime.RubyRunnable.LOG:Lorg/jruby/util/log/Logger;
1: iconst_0
putstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.jruby.RubyThread, org.jruby.runtime.builtin.IRubyObject[], org.jruby.runtime.Block);
descriptor: (Lorg/jruby/RubyThread;[Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)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
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
2: aload 0
aload 1
invokevirtual org.jruby.RubyThread.getRuntime:()Lorg/jruby/Ruby;
putfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
3: aload 0
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
getstatic org.jruby.runtime.Block$Type.THREAD:Lorg/jruby/runtime/Block$Type;
aload 3
invokevirtual org.jruby.Ruby.newProc:(Lorg/jruby/runtime/Block$Type;Lorg/jruby/runtime/Block;)Lorg/jruby/RubyProc;
putfield org.jruby.internal.runtime.RubyRunnable.proc:Lorg/jruby/RubyProc;
4: aload 0
aload 2
putfield org.jruby.internal.runtime.RubyRunnable.arguments:[Lorg/jruby/runtime/builtin/IRubyObject;
5: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/jruby/internal/runtime/RubyRunnable;
0 6 1 rubyThread Lorg/jruby/RubyThread;
0 6 2 args [Lorg/jruby/runtime/builtin/IRubyObject;
0 6 3 currentBlock Lorg/jruby/runtime/Block;
MethodParameters:
Name Flags
rubyThread
args
currentBlock
public org.jruby.RubyThread getRubyThread();
descriptor: ()Lorg/jruby/RubyThread;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/RubyRunnable;
RuntimeVisibleAnnotations:
java.lang.Deprecated()
public java.lang.Thread getJavaThread();
descriptor: ()Ljava/lang/Thread;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.javaThread:Ljava/lang/Thread;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/internal/runtime/RubyRunnable;
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=9, args_size=1
start local 0 0: aload 0
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
putfield org.jruby.internal.runtime.RubyRunnable.javaThread:Ljava/lang/Thread;
1: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getThreadService:()Lorg/jruby/internal/runtime/ThreadService;
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
invokevirtual org.jruby.internal.runtime.ThreadService.registerNewThread:(Lorg/jruby/RubyThread;)Lorg/jruby/runtime/ThreadContext;
astore 1
start local 1 2: aconst_null
astore 2
start local 2 3: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.javaThread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
astore 2
4: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.javaThread:Ljava/lang/Thread;
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getJRubyClassLoader:()Lorg/jruby/util/JRubyClassLoader;
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
5: goto 10
StackMap locals: org.jruby.internal.runtime.RubyRunnable org.jruby.runtime.ThreadContext java.lang.ClassLoader
StackMap stack: java.lang.SecurityException
6: pop
7: getstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
ifne 10
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 10
8: iconst_1
putstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
9: getstatic org.jruby.internal.runtime.RubyRunnable.LOG:Lorg/jruby/util/log/Logger;
ldc "WARNING: Security restrictions disallowed setting context classloader for Ruby threads."
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
10: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
invokevirtual org.jruby.RubyThread.beforeStart:()V
11: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.proc:Lorg/jruby/RubyProc;
invokevirtual org.jruby.RubyProc.getBlock:()Lorg/jruby/runtime/Block;
astore 3
start local 3 12: aload 3
invokevirtual org.jruby.runtime.Block.getFrame:()Lorg/jruby/runtime/Frame;
invokevirtual org.jruby.runtime.Frame.getKlazz:()Lorg/jruby/RubyModule;
astore 4
start local 4 13: aload 3
invokevirtual org.jruby.runtime.Block.getBinding:()Lorg/jruby/runtime/Binding;
invokevirtual org.jruby.runtime.Binding.getFile:()Ljava/lang/String;
astore 5
start local 5 14: aload 3
invokevirtual org.jruby.runtime.Block.getBinding:()Lorg/jruby/runtime/Binding;
invokevirtual org.jruby.runtime.Binding.getLine:()I
istore 6
start local 6 15: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.hasEventHooks:()Z
ifeq 16
aload 1
getstatic org.jruby.runtime.RubyEvent.THREAD_BEGIN:Lorg/jruby/runtime/RubyEvent;
aconst_null
aload 4
aload 5
iload 6
invokevirtual org.jruby.runtime.ThreadContext.trace:(Lorg/jruby/runtime/RubyEvent;Ljava/lang/String;Lorg/jruby/RubyModule;Ljava/lang/String;I)V
16: StackMap locals: org.jruby.internal.runtime.RubyRunnable org.jruby.runtime.ThreadContext java.lang.ClassLoader org.jruby.runtime.Block org.jruby.RubyModule java.lang.String int
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.proc:Lorg/jruby/RubyProc;
aload 1
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.arguments:[Lorg/jruby/runtime/builtin/IRubyObject;
invokevirtual org.jruby.RubyProc.call:(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
astore 7
start local 7 17: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.hasEventHooks:()Z
ifeq 18
aload 1
getstatic org.jruby.runtime.RubyEvent.THREAD_END:Lorg/jruby/runtime/RubyEvent;
aconst_null
aload 4
aload 5
iload 6
invokevirtual org.jruby.runtime.ThreadContext.trace:(Lorg/jruby/runtime/RubyEvent;Ljava/lang/String;Lorg/jruby/RubyModule;Ljava/lang/String;I)V
18: StackMap locals: org.jruby.runtime.builtin.IRubyObject
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
aload 7
invokevirtual org.jruby.RubyThread.cleanTerminate:(Lorg/jruby/runtime/builtin/IRubyObject;)V
end local 7 19: goto 53
StackMap locals: org.jruby.internal.runtime.RubyRunnable org.jruby.runtime.ThreadContext java.lang.ClassLoader org.jruby.runtime.Block org.jruby.RubyModule java.lang.String int
StackMap stack: org.jruby.exceptions.MainExitException
20: pop
21: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getThreadService:()Lorg/jruby/internal/runtime/ThreadService;
invokevirtual org.jruby.internal.runtime.ThreadService.getMainThread:()Lorg/jruby/RubyThread;
invokevirtual org.jruby.RubyThread.kill:()Lorg/jruby/runtime/builtin/IRubyObject;
pop
22: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
invokevirtual org.jruby.RubyThread.dispose:()V
23: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.javaThread:Ljava/lang/Thread;
aload 2
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
24: goto 29
StackMap locals:
StackMap stack: java.lang.SecurityException
25: pop
26: getstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
ifne 29
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 29
27: iconst_1
putstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
28: getstatic org.jruby.internal.runtime.RubyRunnable.LOG:Lorg/jruby/util/log/Logger;
ldc "WARNING: Security restrictions disallowed setting context classloader for Ruby threads."
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
29: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isProfilingEntireRun:()Z
ifeq 64
30: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
aload 1
invokevirtual org.jruby.runtime.ThreadContext.getProfileCollection:()Lorg/jruby/runtime/profile/ProfileCollection;
invokevirtual org.jruby.Ruby.printProfileData:(Lorg/jruby/runtime/profile/ProfileCollection;)V
goto 64
31: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
start local 7 32: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
aload 7
invokevirtual org.jruby.RubyThread.exceptionRaised:(Ljava/lang/Throwable;)V
end local 7 33: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
invokevirtual org.jruby.RubyThread.dispose:()V
34: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.javaThread:Ljava/lang/Thread;
aload 2
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
35: goto 40
StackMap locals:
StackMap stack: java.lang.SecurityException
36: pop
37: getstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
ifne 40
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 40
38: iconst_1
putstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
39: getstatic org.jruby.internal.runtime.RubyRunnable.LOG:Lorg/jruby/util/log/Logger;
ldc "WARNING: Security restrictions disallowed setting context classloader for Ruby threads."
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
40: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isProfilingEntireRun:()Z
ifeq 64
41: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
aload 1
invokevirtual org.jruby.runtime.ThreadContext.getProfileCollection:()Lorg/jruby/runtime/profile/ProfileCollection;
invokevirtual org.jruby.Ruby.printProfileData:(Lorg/jruby/runtime/profile/ProfileCollection;)V
goto 64
42: StackMap locals:
StackMap stack: java.lang.Throwable
astore 8
43: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
invokevirtual org.jruby.RubyThread.dispose:()V
44: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.javaThread:Ljava/lang/Thread;
aload 2
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
45: goto 50
StackMap locals: org.jruby.internal.runtime.RubyRunnable org.jruby.runtime.ThreadContext java.lang.ClassLoader org.jruby.runtime.Block org.jruby.RubyModule java.lang.String int top java.lang.Throwable
StackMap stack: java.lang.SecurityException
46: pop
47: getstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
ifne 50
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 50
48: iconst_1
putstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
49: getstatic org.jruby.internal.runtime.RubyRunnable.LOG:Lorg/jruby/util/log/Logger;
ldc "WARNING: Security restrictions disallowed setting context classloader for Ruby threads."
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
50: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isProfilingEntireRun:()Z
ifeq 52
51: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
aload 1
invokevirtual org.jruby.runtime.ThreadContext.getProfileCollection:()Lorg/jruby/runtime/profile/ProfileCollection;
invokevirtual org.jruby.Ruby.printProfileData:(Lorg/jruby/runtime/profile/ProfileCollection;)V
52: StackMap locals:
StackMap stack:
aload 8
athrow
53: StackMap locals: org.jruby.internal.runtime.RubyRunnable org.jruby.runtime.ThreadContext java.lang.ClassLoader org.jruby.runtime.Block org.jruby.RubyModule java.lang.String int
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.rubyThread:Lorg/jruby/RubyThread;
invokevirtual org.jruby.RubyThread.dispose:()V
54: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.javaThread:Ljava/lang/Thread;
aload 2
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
55: goto 60
StackMap locals:
StackMap stack: java.lang.SecurityException
56: pop
57: getstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
ifne 60
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isVerbose:()Z
ifeq 60
58: iconst_1
putstatic org.jruby.internal.runtime.RubyRunnable.warnedAboutTC:Z
59: getstatic org.jruby.internal.runtime.RubyRunnable.LOG:Lorg/jruby/util/log/Logger;
ldc "WARNING: Security restrictions disallowed setting context classloader for Ruby threads."
iconst_0
anewarray java.lang.Object
invokeinterface org.jruby.util.log.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
60: StackMap locals:
StackMap stack:
aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
invokevirtual org.jruby.RubyInstanceConfig.isProfilingEntireRun:()Z
ifeq 64
61: aload 0
getfield org.jruby.internal.runtime.RubyRunnable.runtime:Lorg/jruby/Ruby;
aload 1
invokevirtual org.jruby.runtime.ThreadContext.getProfileCollection:()Lorg/jruby/runtime/profile/ProfileCollection;
invokevirtual org.jruby.Ruby.printProfileData:(Lorg/jruby/runtime/profile/ProfileCollection;)V
end local 6 end local 5 end local 4 end local 3 62: goto 64
StackMap locals: org.jruby.internal.runtime.RubyRunnable org.jruby.runtime.ThreadContext java.lang.ClassLoader
StackMap stack: org.jruby.exceptions.ThreadKill
63: pop
64: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 65 0 this Lorg/jruby/internal/runtime/RubyRunnable;
2 65 1 context Lorg/jruby/runtime/ThreadContext;
3 65 2 oldContextClassLoader Ljava/lang/ClassLoader;
12 62 3 threadBlock Lorg/jruby/runtime/Block;
13 62 4 frameClass Lorg/jruby/RubyModule;
14 62 5 file Ljava/lang/String;
15 62 6 line I
17 19 7 result Lorg/jruby/runtime/builtin/IRubyObject;
32 33 7 t Ljava/lang/Throwable;
Exception table:
from to target type
3 5 6 Class java.lang.SecurityException
15 19 20 Class org.jruby.exceptions.MainExitException
23 24 25 Class java.lang.SecurityException
15 19 31 Class java.lang.Throwable
34 35 36 Class java.lang.SecurityException
15 22 42 any
31 33 42 any
44 45 46 Class java.lang.SecurityException
54 55 56 Class java.lang.SecurityException
11 62 63 Class org.jruby.exceptions.ThreadKill
}
SourceFile: "RubyRunnable.java"
InnerClasses:
public final Type = org.jruby.runtime.Block$Type of org.jruby.runtime.Block