Skip to content

Instantly share code, notes, and snippets.

@jruby
Created June 1, 2009 08:42
Show Gist options
  • Save jruby/121310 to your computer and use it in GitHub Desktop.
Save jruby/121310 to your computer and use it in GitHub Desktop.
~/projects/ruby2java ➔ javap -v RubyMain
Compiled from "examples.ruby_main.rb"
public class RubyMain extends org.jruby.RubyObject
SourceFile: "examples/ruby_main.rb"
minor version: 0
major version: 48
Constant pool:
const #1 = Asciz RubyMain;
const #2 = class #1; // RubyMain
const #3 = Asciz org/jruby/RubyObject;
const #4 = class #3; // org/jruby/RubyObject
const #5 = Asciz examples/ruby_main.rb;
const #6 = Asciz __ruby_class__;
const #7 = Asciz Lorg/jruby/RubyClass;;
const #8 = Asciz <clinit>;
const #9 = Asciz ()V;
const #10 = Asciz org/jruby/Ruby;
const #11 = class #10; // org/jruby/Ruby
const #12 = Asciz getGlobalRuntime;
const #13 = Asciz ()Lorg/jruby/Ruby;;
const #14 = NameAndType #12:#13;// getGlobalRuntime:()Lorg/jruby/Ruby;
const #15 = Method #11.#14; // org/jruby/Ruby.getGlobalRuntime:()Lorg/jruby/Ruby;
const #16 = Asciz class RubyMain\n def self.main(args)\n args.each {|arg| puts arg}\n end\nend\n\nif defined? Ruby2Java\n RubyMain.static_signature :main, [java.lang.String[]] => Java::void\nend\n;
const #17 = String #16; // class RubyMain\n def self.main(args)\n args.each {|arg| puts arg}\n end\nend\n\nif defined? Ruby2Java\n RubyMain.static_signature :main, [java.lang.String[]] => Java::void\nend\n
const #18 = String #5; // examples/ruby_main.rb
const #19 = Asciz executeScript;
const #20 = Asciz (Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;;
const #21 = NameAndType #19:#20;// executeScript:(Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
const #22 = Method #11.#21; // org/jruby/Ruby.executeScript:(Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
const #23 = String #1; // RubyMain
const #24 = Asciz getClass;
const #25 = Asciz (Ljava/lang/String;)Lorg/jruby/RubyClass;;
const #26 = NameAndType #24:#25;// getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
const #27 = Method #11.#26; // org/jruby/Ruby.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
const #28 = NameAndType #6:#7;// __ruby_class__:Lorg/jruby/RubyClass;
const #29 = Field #2.#28; // RubyMain.__ruby_class__:Lorg/jruby/RubyClass;
const #30 = Asciz java/lang/Class;
const #31 = class #30; // java/lang/Class
const #32 = Asciz forName;
const #33 = Asciz (Ljava/lang/String;)Ljava/lang/Class;;
const #34 = NameAndType #32:#33;// forName:(Ljava/lang/String;)Ljava/lang/Class;
const #35 = Method #31.#34; // java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
const #36 = Asciz org/jruby/RubyClass;
const #37 = class #36; // org/jruby/RubyClass
const #38 = Asciz setClassAllocator;
const #39 = Asciz (Ljava/lang/Class;)V;
const #40 = NameAndType #38:#39;// setClassAllocator:(Ljava/lang/Class;)V
const #41 = Method #37.#40; // org/jruby/RubyClass.setClassAllocator:(Ljava/lang/Class;)V
const #42 = Asciz <init>;
const #43 = Asciz (Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V;
const #44 = NameAndType #42:#43;// "<init>":(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
const #45 = Method #4.#44; // org/jruby/RubyObject."<init>":(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
const #46 = Asciz main;
const #47 = Asciz ([Ljava/lang/String;)V;
const #48 = Asciz org/jruby/runtime/builtin/IRubyObject;
const #49 = class #48; // org/jruby/runtime/builtin/IRubyObject
const #50 = Asciz getRuntime;
const #51 = NameAndType #50:#13;// getRuntime:()Lorg/jruby/Ruby;
const #52 = InterfaceMethod #49.#51; // org/jruby/runtime/builtin/IRubyObject.getRuntime:()Lorg/jruby/Ruby;
const #53 = Asciz getCurrentContext;
const #54 = Asciz ()Lorg/jruby/runtime/ThreadContext;;
const #55 = NameAndType #53:#54;// getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
const #56 = Method #11.#55; // org/jruby/Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
const #57 = String #46; // main
const #58 = Asciz org/jruby/javasupport/JavaUtil;
const #59 = class #58; // org/jruby/javasupport/JavaUtil
const #60 = Asciz convertJavaToUsableRubyObject;
const #61 = Asciz (Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject;;
const #62 = NameAndType #60:#61;// convertJavaToUsableRubyObject:(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject;
const #63 = Method #59.#62; // org/jruby/javasupport/JavaUtil.convertJavaToUsableRubyObject:(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject;
const #64 = Asciz org/jruby/RubyBasicObject;
const #65 = class #64; // org/jruby/RubyBasicObject
const #66 = Asciz callMethod;
const #67 = Asciz (Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;;
const #68 = NameAndType #66:#67;// callMethod:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
const #69 = Method #65.#68; // org/jruby/RubyBasicObject.callMethod:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
const #70 = Asciz Code;
const #71 = Asciz SourceFile;
{
static {};
Code:
Stack=4, Locals=0, Args_size=0
0: invokestatic #15; //Method org/jruby/Ruby.getGlobalRuntime:()Lorg/jruby/Ruby;
3: dup
4: ldc #17; //String class RubyMain\n def self.main(args)\n args.each {|arg| puts arg}\n end\nend\n\nif defined? Ruby2Java\n RubyMain.static_signature :main, [java.lang.String[]] => Java::void\nend\n
6: ldc #18; //String examples/ruby_main.rb
8: invokevirtual #22; //Method org/jruby/Ruby.executeScript:(Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
11: pop
12: ldc #23; //String RubyMain
14: invokevirtual #27; //Method org/jruby/Ruby.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
17: dup
18: putstatic #29; //Field __ruby_class__:Lorg/jruby/RubyClass;
21: ldc #23; //String RubyMain
23: invokestatic #35; //Method java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
26: invokevirtual #41; //Method org/jruby/RubyClass.setClassAllocator:(Ljava/lang/Class;)V
29: return
public RubyMain();
Code:
Stack=3, Locals=1, Args_size=1
0: aload_0
1: invokestatic #15; //Method org/jruby/Ruby.getGlobalRuntime:()Lorg/jruby/Ruby;
4: getstatic #29; //Field __ruby_class__:Lorg/jruby/RubyClass;
7: invokespecial #45; //Method org/jruby/RubyObject."<init>":(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
10: return
public static void main(java.lang.String[]);
Code:
Stack=8, Locals=2, Args_size=1
0: getstatic #29; //Field __ruby_class__:Lorg/jruby/RubyClass;
3: dup
4: invokeinterface #52, 1; //InterfaceMethod org/jruby/runtime/builtin/IRubyObject.getRuntime:()Lorg/jruby/Ruby;
9: dup
10: astore_1
11: invokevirtual #56; //Method org/jruby/Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
14: ldc #57; //String main
16: iconst_1
17: anewarray #49; //class org/jruby/runtime/builtin/IRubyObject
20: dup
21: iconst_0
22: aload_1
23: aload_0
24: invokestatic #63; //Method org/jruby/javasupport/JavaUtil.convertJavaToUsableRubyObject:(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject;
27: aastore
28: invokevirtual #69; //Method org/jruby/RubyBasicObject.callMethod:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
31: pop
32: return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment