/*
* The Computer Language Shootout
* http://shootout.alioth.debian.org/
*
* contributed by Jochen Hinrichsen
*/
class ackermann {
static Integer A(Integer x, Integer y) {
if (x == 0) return y + 1
if (y == 0) return A(x - 1, 1)
return A(x - 1, A(x, y - 1))
}
static void main(String[] args) {
def n = args[0].toInteger()
def result = A(3, n)
println("Ack(3,${n}): ${result}")
}
}
Groovyc (Legacy)
Compiled from "ackermann.groovy"
public class ackermann implements groovy.lang.GroovyObject {
public static transient boolean __$stMC;
public ackermann();
Code:
0: aload_0
1: invokespecial #17 // Method java/lang/Object."<init>":()V
4: invokestatic #21 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
7: astore_1
8: aload_0
9: invokevirtual #25 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
12: astore_2
13: aload_2
14: aload_0
15: swap
16: putfield #27 // Field metaClass:Lgroovy/lang/MetaClass;
19: aload_2
20: pop
21: return
public static java.lang.Integer A(java.lang.Integer, java.lang.Integer);
Code:
0: invokestatic #21 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_2
4: aload_0
5: iconst_0
6: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
9: invokestatic #43 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
12: ifeq 38
15: aload_2
16: ldc #44 // int 0
18: aaload
19: aload_1
20: iconst_1
21: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
24: invokeinterface #50, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
29: ldc #33 // class java/lang/Integer
31: invokestatic #54 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
34: checkcast #33 // class java/lang/Integer
37: areturn
38: aload_1
39: iconst_0
40: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
43: invokestatic #43 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
46: ifeq 87
49: aload_2
50: ldc #55 // int 1
52: aaload
53: ldc #2 // class ackermann
55: aload_2
56: ldc #56 // int 2
58: aaload
59: aload_0
60: iconst_1
61: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
64: invokeinterface #50, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
69: iconst_1
70: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
73: invokeinterface #60, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
78: ldc #33 // class java/lang/Integer
80: invokestatic #54 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
83: checkcast #33 // class java/lang/Integer
86: areturn
87: aload_2
88: ldc #61 // int 3
90: aaload
91: ldc #2 // class ackermann
93: aload_2
94: ldc #62 // int 4
96: aaload
97: aload_0
98: iconst_1
99: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
102: invokeinterface #50, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
107: aload_2
108: ldc #63 // int 5
110: aaload
111: ldc #2 // class ackermann
113: aload_0
114: aload_2
115: ldc #64 // int 6
117: aaload
118: aload_1
119: iconst_1
120: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
123: invokeinterface #50, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
128: invokeinterface #60, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
133: invokeinterface #60, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
138: ldc #33 // class java/lang/Integer
140: invokestatic #54 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
143: checkcast #33 // class java/lang/Integer
146: areturn
147: aconst_null
148: areturn
public static void main(java.lang.String...);
Code:
0: invokestatic #21 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_1
4: aconst_null
5: astore_2
6: invokestatic #75 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
9: ifeq 27
12: getstatic #77 // Field __$stMC:Z
15: ifne 27
18: invokestatic #80 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
21: ifne 27
24: goto 58
27: aload_1
28: ldc #81 // int 7
30: aaload
31: aload_1
32: ldc #82 // int 8
34: aaload
35: aload_0
36: iconst_0
37: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
40: invokeinterface #50, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
45: invokeinterface #85, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
50: astore_3
51: aload_3
52: astore_2
53: aload_3
54: pop
55: goto 80
58: aload_1
59: ldc #86 // int 9
61: aaload
62: aload_0
63: iconst_0
64: invokestatic #90 // Method org/codehaus/groovy/runtime/BytecodeInterface8.objectArrayGet:([Ljava/lang/Object;I)Ljava/lang/Object;
67: invokeinterface #85, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
72: astore 4
74: aload 4
76: astore_2
77: aload 4
79: pop
80: aload_1
81: ldc #91 // int 10
83: aaload
84: ldc #2 // class ackermann
86: iconst_3
87: invokestatic #37 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
90: aload_2
91: invokeinterface #60, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
96: astore 5
98: aload 5
100: pop
101: aload_1
102: ldc #92 // int 11
104: aaload
105: ldc #2 // class ackermann
107: new #94 // class org/codehaus/groovy/runtime/GStringImpl
110: dup
111: iconst_2
112: anewarray #4 // class java/lang/Object
115: dup
116: iconst_0
117: aload_2
118: aastore
119: dup
120: iconst_1
121: aload 5
123: aastore
124: iconst_3
125: anewarray #96 // class java/lang/String
128: dup
129: iconst_0
130: ldc #98 // String Ack(3,
132: aastore
133: dup
134: iconst_1
135: ldc #100 // String ):
137: aastore
138: dup
139: iconst_2
140: ldc #102 // String
142: aastore
143: invokespecial #105 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
146: invokeinterface #108, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
151: pop
152: return
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #117 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class ackermann
6: if_acmpeq 14
9: aload_0
10: invokestatic #121 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #123 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #117 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #129 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #123 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #132 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
public groovy.lang.MetaClass getMetaClass();
Code:
0: aload_0
1: getfield #27 // Field metaClass:Lgroovy/lang/MetaClass;
4: dup
5: ifnull 9
8: areturn
9: pop
10: aload_0
11: dup
12: invokevirtual #25 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
15: putfield #27 // Field metaClass:Lgroovy/lang/MetaClass;
18: aload_0
19: getfield #27 // Field metaClass:Lgroovy/lang/MetaClass;
22: areturn
public void setMetaClass(groovy.lang.MetaClass);
Code:
0: aload_0
1: aload_1
2: putfield #27 // Field metaClass:Lgroovy/lang/MetaClass;
5: return
public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #137 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #142, 4 // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
12: areturn
public java.lang.Object getProperty(java.lang.String);
Code:
0: aload_0
1: invokevirtual #137 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: invokeinterface #147, 3 // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
11: areturn
public void setProperty(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #137 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #152, 4 // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
12: return
}
Invoke Dynamic
Compiled from "ackermann.groovy"
public class ackermann implements groovy.lang.GroovyObject {
public static transient boolean __$stMC;
public ackermann();
Code:
0: aload_0
1: invokespecial #17 // Method java/lang/Object."<init>":()V
4: aload_0
5: invokevirtual #21 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
8: astore_1
9: aload_1
10: aload_0
11: swap
12: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
15: aload_1
16: pop
17: return
public static java.lang.Integer A(java.lang.Integer, java.lang.Integer);
Code:
0: aload_0
1: iconst_0
2: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
5: invokestatic #39 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
8: ifeq 24
11: aload_1
12: iconst_1
13: invokedynamic #53, 0 // InvokeDynamic #0:invoke:(Ljava/lang/Integer;I)Ljava/lang/Object;
18: invokedynamic #59, 0 // InvokeDynamic #1:cast:(Ljava/lang/Object;)Ljava/lang/Integer;
23: areturn
24: aload_1
25: iconst_0
26: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
29: invokestatic #39 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
32: ifeq 56
35: ldc #2 // class ackermann
37: aload_0
38: iconst_1
39: invokedynamic #62, 0 // InvokeDynamic #2:invoke:(Ljava/lang/Integer;I)Ljava/lang/Object;
44: iconst_1
45: invokedynamic #66, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Class;Ljava/lang/Object;I)Ljava/lang/Object;
50: invokedynamic #59, 0 // InvokeDynamic #1:cast:(Ljava/lang/Object;)Ljava/lang/Integer;
55: areturn
56: ldc #2 // class ackermann
58: aload_0
59: iconst_1
60: invokedynamic #62, 0 // InvokeDynamic #2:invoke:(Ljava/lang/Integer;I)Ljava/lang/Object;
65: ldc #2 // class ackermann
67: aload_0
68: aload_1
69: iconst_1
70: invokedynamic #62, 0 // InvokeDynamic #2:invoke:(Ljava/lang/Integer;I)Ljava/lang/Object;
75: invokedynamic #69, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Class;Ljava/lang/Integer;Ljava/lang/Object;)Ljava/lang/Object;
80: invokedynamic #72, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
85: invokedynamic #59, 0 // InvokeDynamic #1:cast:(Ljava/lang/Object;)Ljava/lang/Integer;
90: areturn
91: nop
92: athrow
public static void main(java.lang.String...);
Code:
0: aload_0
1: iconst_0
2: invokedynamic #84, 0 // InvokeDynamic #4:invoke:([Ljava/lang/String;I)Ljava/lang/Object;
7: invokedynamic #89, 0 // InvokeDynamic #5:invoke:(Ljava/lang/Object;)Ljava/lang/Object;
12: astore_1
13: aload_1
14: pop
15: ldc #2 // class ackermann
17: iconst_3
18: aload_1
19: invokedynamic #92, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Class;ILjava/lang/Object;)Ljava/lang/Object;
24: astore_2
25: aload_2
26: pop
27: ldc #2 // class ackermann
29: new #94 // class org/codehaus/groovy/runtime/GStringImpl
32: dup
33: iconst_2
34: anewarray #4 // class java/lang/Object
37: dup
38: iconst_0
39: aload_1
40: aastore
41: dup
42: iconst_1
43: aload_2
44: aastore
45: iconst_3
46: anewarray #96 // class java/lang/String
49: dup
50: iconst_0
51: ldc #98 // String Ack(3,
53: aastore
54: dup
55: iconst_1
56: ldc #100 // String ):
58: aastore
59: dup
60: iconst_2
61: ldc #102 // String
63: aastore
64: invokespecial #105 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
67: invokedynamic #110, 0 // InvokeDynamic #6:invoke:(Ljava/lang/Class;Lgroovy/lang/GString;)Ljava/lang/Object;
72: pop
73: return
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #119 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class ackermann
6: if_acmpeq 14
9: aload_0
10: invokestatic #123 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #125 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #119 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #131 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #125 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #134 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
public groovy.lang.MetaClass getMetaClass();
Code:
0: aload_0
1: getfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
4: dup
5: ifnull 9
8: areturn
9: pop
10: aload_0
11: dup
12: invokevirtual #21 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
15: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
18: aload_0
19: getfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
22: areturn
public void setMetaClass(groovy.lang.MetaClass);
Code:
0: aload_0
1: aload_1
2: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
5: return
public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #141 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #144, 4 // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
12: areturn
public java.lang.Object getProperty(java.lang.String);
Code:
0: aload_0
1: invokevirtual #141 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: invokeinterface #149, 3 // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
11: areturn
public void setProperty(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #141 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #154, 4 // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
12: return
}
Static Compilation
Compiled from "ackermann.groovy"
public class ackermann implements groovy.lang.GroovyObject {
public static transient boolean __$stMC;
public ackermann();
Code:
0: aload_0
1: invokespecial #17 // Method java/lang/Object."<init>":()V
4: aload_0
5: invokevirtual #21 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
8: astore_1
9: aload_1
10: aload_0
11: swap
12: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
15: aload_1
16: pop
17: return
public static java.lang.Integer A(java.lang.Integer, java.lang.Integer);
Code:
0: aload_0
1: iconst_0
2: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
5: invokestatic #39 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
8: ifeq 28
11: aload_1
12: iconst_1
13: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
16: invokestatic #45 // Method org/codehaus/groovy/runtime/dgmimpl/NumberNumberPlus.plus:(Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
19: ldc #29 // class java/lang/Integer
21: invokestatic #49 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
24: checkcast #29 // class java/lang/Integer
27: areturn
28: aload_1
29: iconst_0
30: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
33: invokestatic #39 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
36: ifeq 63
39: aload_0
40: iconst_1
41: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
44: invokestatic #54 // Method org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.minus:(Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
47: ldc #29 // class java/lang/Integer
49: invokestatic #49 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
52: checkcast #29 // class java/lang/Integer
55: iconst_1
56: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
59: invokestatic #56 // Method A:(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;
62: areturn
63: aload_0
64: iconst_1
65: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
68: invokestatic #54 // Method org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.minus:(Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
71: ldc #29 // class java/lang/Integer
73: invokestatic #49 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
76: checkcast #29 // class java/lang/Integer
79: aload_0
80: aload_1
81: iconst_1
82: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
85: invokestatic #54 // Method org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.minus:(Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
88: ldc #29 // class java/lang/Integer
90: invokestatic #49 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
93: checkcast #29 // class java/lang/Integer
96: invokestatic #56 // Method A:(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;
99: invokestatic #56 // Method A:(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;
102: areturn
103: aconst_null
104: areturn
public static void main(java.lang.String...);
Code:
0: aload_0
1: iconst_0
2: invokestatic #67 // Method org/codehaus/groovy/runtime/BytecodeInterface8.objectArrayGet:([Ljava/lang/Object;I)Ljava/lang/Object;
5: ldc #69 // class java/lang/CharSequence
7: invokestatic #49 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
10: checkcast #69 // class java/lang/CharSequence
13: invokestatic #75 // Method org/codehaus/groovy/runtime/StringGroovyMethods.toInteger:(Ljava/lang/CharSequence;)Ljava/lang/Integer;
16: astore_1
17: aload_1
18: pop
19: iconst_3
20: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
23: aload_1
24: invokestatic #56 // Method A:(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;
27: astore_2
28: aload_2
29: pop
30: ldc #2 // class ackermann
32: new #77 // class org/codehaus/groovy/runtime/GStringImpl
35: dup
36: iconst_2
37: anewarray #4 // class java/lang/Object
40: dup
41: iconst_0
42: aload_1
43: aastore
44: dup
45: iconst_1
46: aload_2
47: aastore
48: iconst_3
49: anewarray #79 // class java/lang/String
52: dup
53: iconst_0
54: ldc #81 // String Ack(3,
56: aastore
57: dup
58: iconst_1
59: ldc #83 // String ):
61: aastore
62: dup
63: iconst_2
64: ldc #85 // String
66: aastore
67: invokespecial #88 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
70: invokestatic #94 // Method org/codehaus/groovy/runtime/DefaultGroovyMethods.println:(Ljava/lang/Object;Ljava/lang/Object;)V
73: aconst_null
74: pop
75: return
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #102 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class ackermann
6: if_acmpeq 14
9: aload_0
10: invokestatic #106 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #108 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #102 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #114 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #108 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #117 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
public groovy.lang.MetaClass getMetaClass();
Code:
0: aload_0
1: getfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
4: dup
5: ifnull 9
8: areturn
9: pop
10: aload_0
11: dup
12: invokevirtual #21 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
15: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
18: aload_0
19: getfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
22: areturn
public void setMetaClass(groovy.lang.MetaClass);
Code:
0: aload_0
1: aload_1
2: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
5: return
public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #122 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #127, 4 // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
12: areturn
public java.lang.Object getProperty(java.lang.String);
Code:
0: aload_0
1: invokevirtual #122 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: invokeinterface #132, 3 // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
11: areturn
public void setProperty(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #122 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #137, 4 // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
12: return
}
Groovyc (Legacy)
Compiled from "ackermann.groovy"
public class ackermann implements groovy.lang.GroovyObject {
public static transient boolean __$stMC;
public ackermann();
Code:
0: aload_0
1: invokespecial #19 // Method java/lang/Object."<init>":()V
4: invokestatic #23 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
7: astore_1
8: aload_0
9: invokevirtual #27 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
12: astore_2
13: aload_2
14: aload_0
15: swap
16: putfield #29 // Field metaClass:Lgroovy/lang/MetaClass;
19: return
public static java.lang.Integer A(java.lang.Integer, java.lang.Integer);
Code:
0: invokestatic #23 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_2
4: aload_0
5: iconst_0
6: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
9: invokestatic #45 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
12: ifeq 38
15: aload_2
16: ldc #46 // int 0
18: aaload
19: aload_1
20: iconst_1
21: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
24: invokeinterface #52, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
29: ldc #35 // class java/lang/Integer
31: invokestatic #56 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
34: checkcast #35 // class java/lang/Integer
37: areturn
38: aload_1
39: iconst_0
40: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
43: invokestatic #45 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
46: ifeq 87
49: aload_2
50: ldc #57 // int 1
52: aaload
53: ldc #2 // class ackermann
55: aload_2
56: ldc #58 // int 2
58: aaload
59: aload_0
60: iconst_1
61: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
64: invokeinterface #52, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
69: iconst_1
70: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
73: invokeinterface #62, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
78: ldc #35 // class java/lang/Integer
80: invokestatic #56 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
83: checkcast #35 // class java/lang/Integer
86: areturn
87: aload_2
88: ldc #63 // int 3
90: aaload
91: ldc #2 // class ackermann
93: aload_2
94: ldc #64 // int 4
96: aaload
97: aload_0
98: iconst_1
99: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
102: invokeinterface #52, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
107: aload_2
108: ldc #65 // int 5
110: aaload
111: ldc #2 // class ackermann
113: aload_0
114: aload_2
115: ldc #66 // int 6
117: aaload
118: aload_1
119: iconst_1
120: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
123: invokeinterface #52, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
128: invokeinterface #62, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
133: invokeinterface #62, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
138: ldc #35 // class java/lang/Integer
140: invokestatic #56 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
143: checkcast #35 // class java/lang/Integer
146: areturn
147: aconst_null
148: areturn
public static void main(java.lang.String...);
Code:
0: invokestatic #23 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_1
4: aconst_null
5: astore_2
6: invokestatic #77 // Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
9: ifeq 27
12: getstatic #79 // Field __$stMC:Z
15: ifne 27
18: invokestatic #82 // Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
21: ifne 27
24: goto 56
27: aload_1
28: ldc #83 // int 7
30: aaload
31: aload_1
32: ldc #84 // int 8
34: aaload
35: aload_0
36: iconst_0
37: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
40: invokeinterface #52, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
45: invokeinterface #87, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
50: astore_3
51: aload_3
52: astore_2
53: goto 75
56: aload_1
57: ldc #88 // int 9
59: aaload
60: aload_0
61: iconst_0
62: invokestatic #92 // Method org/codehaus/groovy/runtime/BytecodeInterface8.objectArrayGet:([Ljava/lang/Object;I)Ljava/lang/Object;
65: invokeinterface #87, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
70: astore 4
72: aload 4
74: astore_2
75: aload_1
76: ldc #93 // int 10
78: aaload
79: ldc #2 // class ackermann
81: iconst_3
82: invokestatic #39 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
85: aload_2
86: invokeinterface #62, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
91: astore 5
93: aload_1
94: ldc #94 // int 11
96: aaload
97: ldc #2 // class ackermann
99: new #96 // class org/codehaus/groovy/runtime/GStringImpl
102: dup
103: iconst_2
104: anewarray #4 // class java/lang/Object
107: dup
108: iconst_0
109: aload_2
110: aastore
111: dup
112: iconst_1
113: aload 5
115: aastore
116: iconst_3
117: anewarray #98 // class java/lang/String
120: dup
121: iconst_0
122: ldc #100 // String Ack(3,
124: aastore
125: dup
126: iconst_1
127: ldc #102 // String ):
129: aastore
130: dup
131: iconst_2
132: ldc #104 // String
134: aastore
135: invokespecial #107 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
138: invokeinterface #110, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
143: pop
144: return
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #119 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class ackermann
6: if_acmpeq 14
9: aload_0
10: invokestatic #123 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #125 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #119 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #131 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #125 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #134 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
public groovy.lang.MetaClass getMetaClass();
Code:
0: aload_0
1: getfield #29 // Field metaClass:Lgroovy/lang/MetaClass;
4: dup
5: ifnull 9
8: areturn
9: pop
10: aload_0
11: dup
12: invokevirtual #27 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
15: putfield #29 // Field metaClass:Lgroovy/lang/MetaClass;
18: aload_0
19: getfield #29 // Field metaClass:Lgroovy/lang/MetaClass;
22: areturn
public void setMetaClass(groovy.lang.MetaClass);
Code:
0: aload_0
1: aload_1
2: putfield #29 // Field metaClass:Lgroovy/lang/MetaClass;
5: return
public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #139 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #144, 4 // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
12: areturn
public java.lang.Object getProperty(java.lang.String);
Code:
0: aload_0
1: invokevirtual #139 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: invokeinterface #149, 3 // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
11: areturn
public void setProperty(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #139 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #154, 4 // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
12: return
}
Invoke Dynamic
Compiled from "ackermann.groovy"
public class ackermann implements groovy.lang.GroovyObject {
public static transient boolean __$stMC;
public ackermann();
Code:
0: aload_0
1: invokespecial #17 // Method java/lang/Object."<init>":()V
4: aload_0
5: invokevirtual #21 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
8: astore_1
9: aload_1
10: aload_0
11: swap
12: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
15: return
public static java.lang.Integer A(java.lang.Integer, java.lang.Integer);
Code:
0: aload_0
1: iconst_0
2: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
5: invokestatic #39 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
8: ifeq 24
11: aload_1
12: iconst_1
13: invokedynamic #53, 0 // InvokeDynamic #0:invoke:(Ljava/lang/Integer;I)Ljava/lang/Object;
18: invokedynamic #59, 0 // InvokeDynamic #1:cast:(Ljava/lang/Object;)Ljava/lang/Integer;
23: areturn
24: aload_1
25: iconst_0
26: invokestatic #33 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
29: invokestatic #39 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
32: ifeq 56
35: ldc #2 // class ackermann
37: aload_0
38: iconst_1
39: invokedynamic #62, 0 // InvokeDynamic #2:invoke:(Ljava/lang/Integer;I)Ljava/lang/Object;
44: iconst_1
45: invokedynamic #66, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Class;Ljava/lang/Object;I)Ljava/lang/Object;
50: invokedynamic #59, 0 // InvokeDynamic #1:cast:(Ljava/lang/Object;)Ljava/lang/Integer;
55: areturn
56: ldc #2 // class ackermann
58: aload_0
59: iconst_1
60: invokedynamic #62, 0 // InvokeDynamic #2:invoke:(Ljava/lang/Integer;I)Ljava/lang/Object;
65: ldc #2 // class ackermann
67: aload_0
68: aload_1
69: iconst_1
70: invokedynamic #62, 0 // InvokeDynamic #2:invoke:(Ljava/lang/Integer;I)Ljava/lang/Object;
75: invokedynamic #69, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Class;Ljava/lang/Integer;Ljava/lang/Object;)Ljava/lang/Object;
80: invokedynamic #72, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
85: invokedynamic #59, 0 // InvokeDynamic #1:cast:(Ljava/lang/Object;)Ljava/lang/Integer;
90: areturn
91: nop
92: athrow
public static void main(java.lang.String...);
Code:
0: aload_0
1: iconst_0
2: invokedynamic #84, 0 // InvokeDynamic #4:invoke:([Ljava/lang/String;I)Ljava/lang/Object;
7: invokedynamic #89, 0 // InvokeDynamic #5:invoke:(Ljava/lang/Object;)Ljava/lang/Object;
12: astore_1
13: ldc #2 // class ackermann
15: iconst_3
16: aload_1
17: invokedynamic #92, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Class;ILjava/lang/Object;)Ljava/lang/Object;
22: astore_2
23: ldc #2 // class ackermann
25: new #94 // class org/codehaus/groovy/runtime/GStringImpl
28: dup
29: iconst_2
30: anewarray #4 // class java/lang/Object
33: dup
34: iconst_0
35: aload_1
36: aastore
37: dup
38: iconst_1
39: aload_2
40: aastore
41: iconst_3
42: anewarray #96 // class java/lang/String
45: dup
46: iconst_0
47: ldc #98 // String Ack(3,
49: aastore
50: dup
51: iconst_1
52: ldc #100 // String ):
54: aastore
55: dup
56: iconst_2
57: ldc #102 // String
59: aastore
60: invokespecial #105 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
63: invokedynamic #110, 0 // InvokeDynamic #6:invoke:(Ljava/lang/Class;Lgroovy/lang/GString;)Ljava/lang/Object;
68: pop
69: return
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #119 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class ackermann
6: if_acmpeq 14
9: aload_0
10: invokestatic #123 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #125 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #119 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #131 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #125 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #134 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
public groovy.lang.MetaClass getMetaClass();
Code:
0: aload_0
1: getfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
4: dup
5: ifnull 9
8: areturn
9: pop
10: aload_0
11: dup
12: invokevirtual #21 // Method $getStaticMetaClass:()Lgroovy/lang/MetaClass;
15: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
18: aload_0
19: getfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
22: areturn
public void setMetaClass(groovy.lang.MetaClass);
Code:
0: aload_0
1: aload_1
2: putfield #23 // Field metaClass:Lgroovy/lang/MetaClass;
5: return
public java.lang.Object invokeMethod(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #141 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #144, 4 // InterfaceMethod groovy/lang/MetaClass.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
12: areturn
public java.lang.Object getProperty(java.lang.String);
Code:
0: aload_0
1: invokevirtual #141 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: invokeinterface #149, 3 // InterfaceMethod groovy/lang/MetaClass.getProperty:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
11: areturn
public void setProperty(java.lang.String, java.lang.Object);
Code:
0: aload_0
1: invokevirtual #141 // Method getMetaClass:()Lgroovy/lang/MetaClass;
4: aload_0
5: aload_1
6: aload_2
7: invokeinterface #154, 4 // InterfaceMethod groovy/lang/MetaClass.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
12: return
}
Static Compilation
Compiled from "collectloop.groovy"
public class collectloop$_run_closure1 extends groovy.lang.Closure implements org.codehaus.groovy.runtime.GeneratedClosure {
public static transient boolean __$stMC;
public collectloop$_run_closure1(java.lang.Object, java.lang.Object);
Code:
0: aload_0
1: aload_1
2: aload_2
3: invokespecial #21 // Method groovy/lang/Closure."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
6: return
public java.lang.Object doCall(java.lang.Object);
Code:
0: aload_1
1: ldc #30 // class java/lang/Number
3: invokestatic #36 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
6: checkcast #30 // class java/lang/Number
9: iconst_2
10: invokestatic #42 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
13: invokestatic #48 // Method org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.multiply:(Ljava/lang/Number;Ljava/lang/Number;)Ljava/lang/Number;
16: areturn
17: aconst_null
18: areturn
public java.lang.Object call(java.lang.Object);
Code:
0: aload_0
1: aload_1
2: invokevirtual #52 // Method doCall:(Ljava/lang/Object;)Ljava/lang/Object;
5: areturn
6: aconst_null
7: areturn
public java.lang.Object call();
Code:
0: aload_0
1: aconst_null
2: invokevirtual #52 // Method doCall:(Ljava/lang/Object;)Ljava/lang/Object;
5: areturn
6: aconst_null
7: areturn
public java.lang.Object doCall();
Code:
0: aload_0
1: aconst_null
2: invokevirtual #52 // Method doCall:(Ljava/lang/Object;)Ljava/lang/Object;
5: areturn
6: aconst_null
7: areturn
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #61 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class collectloop$_run_closure1
6: if_acmpeq 14
9: aload_0
10: invokestatic #65 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #67 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #61 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #73 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #67 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #76 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
}