/*
* The Computer Language Benchmarks Game
* http://shootout.alioth.debian.org/
*
* contributed by Pilho Kim
*/
def countSieve(m, primes) {
def i, k
def count = 0
i = 2
while (i <= m) {
primes[i] = true
i++
}
i = 2
while (i <= m) {
if (primes[i]) {
k = i + i
while (k <= m) {
primes[k] = false
k += i
}
count++
}
i++
}
return count
}
def padNumber(number, fieldLen) {
def bareNumber = "" + number
def numSpaces = fieldLen - bareNumber.length()
def sb = new StringBuffer(' ' * numSpaces)
sb.append(bareNumber)
return sb.toString()
}
def n = 2
if (args.length > 0)
n = args[0].toInteger()
if (n < 2)
n = 2
def m = (1 << n) * 10000
def flags = new boolean[m+1]
[n, n-1, n-2].each {
def k = (1<<it) * 10000
def s1 = padNumber(k, 8)
def s2 = padNumber(countSieve(k, flags), 9)
println("Primes up to $s1$s2")
}
Groovyc (Legacy)
Compiled from "nsieve.groovy"
public class nsieve extends groovy.lang.Script {
public static transient boolean __$stMC;
public nsieve();
Code:
0: aload_0
1: invokespecial #13 // Method groovy/lang/Script."<init>":()V
4: invokestatic #17 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
7: astore_1
8: return
public nsieve(groovy.lang.Binding);
Code:
0: invokestatic #17 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_2
4: aload_0
5: aload_1
6: invokespecial #22 // Method groovy/lang/Script."<init>":(Lgroovy/lang/Binding;)V
9: return
public static void main(java.lang.String...);
Code:
0: invokestatic #17 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_1
4: aload_1
5: ldc #27 // int 0
7: aaload
8: ldc #29 // class org/codehaus/groovy/runtime/InvokerHelper
10: ldc #2 // class nsieve
12: aload_0
13: invokeinterface #35, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
18: pop
19: return
public java.lang.Object run();
Code:
0: invokestatic #17 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_1
4: iconst_2
5: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
8: astore_2
9: aload_2
10: pop
11: aload_1
12: ldc #46 // int 1
14: aaload
15: aload_1
16: ldc #47 // int 2
18: aaload
19: aload_0
20: invokeinterface #51, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callGroovyObjectGetProperty:(Ljava/lang/Object;)Ljava/lang/Object;
25: invokeinterface #54, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callGetProperty:(Ljava/lang/Object;)Ljava/lang/Object;
30: iconst_0
31: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
34: invokestatic #60 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareGreaterThan:(Ljava/lang/Object;Ljava/lang/Object;)Z
37: ifeq 77
40: aload_1
41: ldc #61 // int 3
43: aaload
44: aload_1
45: ldc #62 // int 4
47: aaload
48: aload_1
49: ldc #63 // int 5
51: aaload
52: aload_0
53: invokeinterface #51, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callGroovyObjectGetProperty:(Ljava/lang/Object;)Ljava/lang/Object;
58: iconst_0
59: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
62: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
67: invokeinterface #68, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
72: astore_3
73: aload_3
74: astore_2
75: aload_3
76: pop
77: aload_2
78: iconst_2
79: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
82: invokestatic #71 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThan:(Ljava/lang/Object;Ljava/lang/Object;)Z
85: ifeq 100
88: iconst_2
89: istore 4
91: iload 4
93: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
96: astore_2
97: iload 4
99: pop
100: aload_1
101: ldc #72 // int 6
103: aaload
104: aload_1
105: ldc #73 // int 7
107: aaload
108: iconst_1
109: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
112: aload_2
113: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
118: sipush 10000
121: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
124: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
129: astore 5
131: aload 5
133: pop
134: aload_1
135: ldc #74 // int 8
137: aaload
138: aload 5
140: iconst_1
141: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
144: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
149: invokestatic #80 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
152: multianewarray #82, 1 // class "[Z"
156: new #84 // class groovy/lang/Reference
159: dup_x1
160: swap
161: invokespecial #87 // Method groovy/lang/Reference."<init>":(Ljava/lang/Object;)V
164: astore 6
166: aload 6
168: pop
169: aload_1
170: ldc #88 // int 9
172: aaload
173: iconst_3
174: anewarray #90 // class java/lang/Object
177: dup
178: iconst_0
179: aload_2
180: aastore
181: dup
182: iconst_1
183: aload_1
184: ldc #91 // int 10
186: aaload
187: aload_2
188: iconst_1
189: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
192: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
197: aastore
198: dup
199: iconst_2
200: aload_1
201: ldc #92 // int 11
203: aaload
204: aload_2
205: iconst_2
206: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
209: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
214: aastore
215: invokestatic #96 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
218: new #98 // class nsieve$_run_closure1
221: dup
222: aload_0
223: aload_0
224: aload 6
226: invokespecial #101 // Method nsieve$_run_closure1."<init>":(Ljava/lang/Object;Ljava/lang/Object;Lgroovy/lang/Reference;)V
229: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
234: areturn
235: aconst_null
236: areturn
public java.lang.Object countSieve(java.lang.Object, java.lang.Object);
Code:
0: invokestatic #17 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_3
4: aconst_null
5: astore 4
7: aload 4
9: pop
10: aconst_null
11: astore 5
13: aload 5
15: pop
16: iconst_0
17: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
20: astore 6
22: aload 6
24: pop
25: iconst_2
26: istore 7
28: iload 7
30: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
33: astore 4
35: iload 7
37: pop
38: aload 4
40: aload_1
41: invokestatic #110 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
44: ifeq 96
47: iconst_1
48: istore 8
50: aload_3
51: ldc #111 // int 12
53: aaload
54: aload_2
55: aload 4
57: iload 8
59: invokestatic #116 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
62: invokeinterface #35, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
67: pop
68: iload 8
70: pop
71: aload 4
73: dup
74: astore 9
76: aload_3
77: ldc #117 // int 13
79: aaload
80: swap
81: invokeinterface #68, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
86: dup
87: astore 4
89: pop
90: aload 9
92: pop
93: goto 38
96: iconst_2
97: istore 10
99: iload 10
101: invokestatic #45 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
104: astore 4
106: iload 10
108: pop
109: aload 4
111: aload_1
112: invokestatic #110 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
115: ifeq 258
118: aload_3
119: ldc #118 // int 14
121: aaload
122: aload_2
123: aload 4
125: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
130: invokestatic #122 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.booleanUnbox:(Ljava/lang/Object;)Z
133: ifeq 233
136: aload_3
137: ldc #123 // int 15
139: aaload
140: aload 4
142: aload 4
144: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
149: astore 11
151: aload 11
153: astore 5
155: aload 11
157: pop
158: aload 5
160: aload_1
161: invokestatic #110 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
164: ifeq 211
167: iconst_0
168: istore 12
170: aload_3
171: ldc #124 // int 16
173: aaload
174: aload_2
175: aload 5
177: iload 12
179: invokestatic #116 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
182: invokeinterface #35, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
187: pop
188: iload 12
190: pop
191: aload_3
192: ldc #125 // int 17
194: aaload
195: aload 5
197: aload 4
199: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
204: dup
205: astore 5
207: pop
208: goto 158
211: aload 6
213: dup
214: astore 13
216: aload_3
217: ldc #126 // int 18
219: aaload
220: swap
221: invokeinterface #68, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
226: dup
227: astore 6
229: pop
230: aload 13
232: pop
233: aload 4
235: dup
236: astore 14
238: aload_3
239: ldc #127 // int 19
241: aaload
242: swap
243: invokeinterface #68, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
248: dup
249: astore 4
251: pop
252: aload 14
254: pop
255: goto 109
258: aload 6
260: areturn
261: aconst_null
262: areturn
public java.lang.Object padNumber(java.lang.Object, java.lang.Object);
Code:
0: invokestatic #17 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_3
4: aload_3
5: ldc #133 // int 20
7: aaload
8: ldc #135 // String
10: aload_1
11: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
16: astore 4
18: aload 4
20: pop
21: aload_3
22: ldc #136 // int 21
24: aaload
25: aload_2
26: aload_3
27: ldc #137 // int 22
29: aaload
30: aload 4
32: invokeinterface #68, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
37: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
42: astore 5
44: aload 5
46: pop
47: aload_3
48: ldc #138 // int 23
50: aaload
51: ldc #140 // class java/lang/StringBuffer
53: aload_3
54: ldc #141 // int 24
56: aaload
57: ldc #143 // String
59: aload 5
61: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
66: invokeinterface #146, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callConstructor:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
71: astore 6
73: aload 6
75: pop
76: aload_3
77: ldc #147 // int 25
79: aaload
80: aload 6
82: aload 4
84: invokeinterface #66, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
89: pop
90: aload_3
91: ldc #148 // int 26
93: aaload
94: aload 6
96: invokeinterface #68, 2 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;)Ljava/lang/Object;
101: areturn
102: aconst_null
103: areturn
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #159 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class nsieve
6: if_acmpeq 14
9: aload_0
10: invokestatic #163 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #165 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #159 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #171 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #165 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #174 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
}
Invoke Dynamic
Compiled from "nsieve.groovy"
public class nsieve extends groovy.lang.Script {
public static transient boolean __$stMC;
public nsieve();
Code:
0: aload_0
1: invokespecial #13 // Method groovy/lang/Script."<init>":()V
4: return
public nsieve(groovy.lang.Binding);
Code:
0: aload_0
1: aload_1
2: invokespecial #18 // Method groovy/lang/Script."<init>":(Lgroovy/lang/Binding;)V
5: return
public static void main(java.lang.String...);
Code:
0: ldc #24 // class org/codehaus/groovy/runtime/InvokerHelper
2: ldc #2 // class nsieve
4: aload_0
5: invokedynamic #38, 0 // InvokeDynamic #0:invoke:(Ljava/lang/Class;Ljava/lang/Class;[Ljava/lang/String;)Ljava/lang/Object;
10: pop
11: return
public java.lang.Object run();
Code:
0: iconst_2
1: invokestatic #48 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
4: astore_1
5: aload_1
6: pop
7: aload_0
8: invokedynamic #54, 0 // InvokeDynamic #1:getProperty:(Lnsieve;)Ljava/lang/Object;
13: invokedynamic #59, 0 // InvokeDynamic #2:getProperty:(Ljava/lang/Object;)Ljava/lang/Object;
18: iconst_0
19: invokestatic #48 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
22: invokestatic #65 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareGreaterThan:(Ljava/lang/Object;Ljava/lang/Object;)Z
25: ifeq 50
28: aload_0
29: invokedynamic #54, 0 // InvokeDynamic #1:getProperty:(Lnsieve;)Ljava/lang/Object;
34: iconst_0
35: invokedynamic #70, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Object;I)Ljava/lang/Object;
40: invokedynamic #74, 0 // InvokeDynamic #4:invoke:(Ljava/lang/Object;)Ljava/lang/Object;
45: astore_2
46: aload_2
47: astore_1
48: aload_2
49: pop
50: aload_1
51: iconst_2
52: invokestatic #48 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
55: invokestatic #77 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThan:(Ljava/lang/Object;Ljava/lang/Object;)Z
58: ifeq 70
61: iconst_2
62: istore_3
63: iload_3
64: invokestatic #48 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
67: astore_1
68: iload_3
69: pop
70: iconst_1
71: aload_1
72: invokedynamic #82, 0 // InvokeDynamic #5:invoke:(ILjava/lang/Object;)Ljava/lang/Object;
77: sipush 10000
80: invokedynamic #85, 0 // InvokeDynamic #6:invoke:(Ljava/lang/Object;I)Ljava/lang/Object;
85: astore 4
87: aload 4
89: pop
90: aload 4
92: iconst_1
93: invokedynamic #88, 0 // InvokeDynamic #7:invoke:(Ljava/lang/Object;I)Ljava/lang/Object;
98: invokestatic #94 // Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.intUnbox:(Ljava/lang/Object;)I
101: multianewarray #96, 1 // class "[Z"
105: new #98 // class groovy/lang/Reference
108: dup_x1
109: swap
110: invokespecial #101 // Method groovy/lang/Reference."<init>":(Ljava/lang/Object;)V
113: astore 5
115: aload 5
117: pop
118: iconst_3
119: anewarray #103 // class java/lang/Object
122: dup
123: iconst_0
124: aload_1
125: aastore
126: dup
127: iconst_1
128: aload_1
129: iconst_1
130: invokedynamic #106, 0 // InvokeDynamic #8:invoke:(Ljava/lang/Object;I)Ljava/lang/Object;
135: aastore
136: dup
137: iconst_2
138: aload_1
139: iconst_2
140: invokedynamic #106, 0 // InvokeDynamic #8:invoke:(Ljava/lang/Object;I)Ljava/lang/Object;
145: aastore
146: invokestatic #110 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.createList:([Ljava/lang/Object;)Ljava/util/List;
149: new #112 // class nsieve$_run_closure1
152: dup
153: aload_0
154: aload_0
155: aload 5
157: invokespecial #115 // Method nsieve$_run_closure1."<init>":(Ljava/lang/Object;Ljava/lang/Object;Lgroovy/lang/Reference;)V
160: invokedynamic #120, 0 // InvokeDynamic #9:invoke:(Ljava/util/List;Lgroovy/lang/Closure;)Ljava/lang/Object;
165: areturn
166: nop
167: athrow
public java.lang.Object countSieve(java.lang.Object, java.lang.Object);
Code:
0: aconst_null
1: astore_3
2: aload_3
3: pop
4: aconst_null
5: astore 4
7: aload 4
9: pop
10: iconst_0
11: invokestatic #48 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
14: astore 5
16: aload 5
18: pop
19: iconst_2
20: istore 6
22: iload 6
24: invokestatic #48 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
27: astore_3
28: iload 6
30: pop
31: aload_3
32: aload_1
33: invokestatic #132 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
36: ifeq 73
39: iconst_1
40: istore 7
42: aload_2
43: aload_3
44: iload 7
46: invokedynamic #137, 0 // InvokeDynamic #10:invoke:(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
51: pop
52: iload 7
54: pop
55: aload_3
56: dup
57: astore 8
59: invokedynamic #140, 0 // InvokeDynamic #11:invoke:(Ljava/lang/Object;)Ljava/lang/Object;
64: dup
65: astore_3
66: pop
67: aload 8
69: pop
70: goto 31
73: iconst_2
74: istore 9
76: iload 9
78: invokestatic #48 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
81: astore_3
82: iload 9
84: pop
85: aload_3
86: aload_1
87: invokestatic #132 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
90: ifeq 200
93: aload_2
94: aload_3
95: invokedynamic #142, 0 // InvokeDynamic #3:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
100: invokedynamic #148, 0 // InvokeDynamic #12:cast:(Ljava/lang/Object;)Z
105: ifeq 182
108: aload_3
109: aload_3
110: invokedynamic #149, 0 // InvokeDynamic #7:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
115: astore 10
117: aload 10
119: astore 4
121: aload 10
123: pop
124: aload 4
126: aload_1
127: invokestatic #132 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
130: ifeq 165
133: iconst_0
134: istore 11
136: aload_2
137: aload 4
139: iload 11
141: invokedynamic #137, 0 // InvokeDynamic #10:invoke:(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
146: pop
147: iload 11
149: pop
150: aload 4
152: aload_3
153: invokedynamic #149, 0 // InvokeDynamic #7:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
158: dup
159: astore 4
161: pop
162: goto 124
165: aload 5
167: dup
168: astore 12
170: invokedynamic #140, 0 // InvokeDynamic #11:invoke:(Ljava/lang/Object;)Ljava/lang/Object;
175: dup
176: astore 5
178: pop
179: aload 12
181: pop
182: aload_3
183: dup
184: astore 13
186: invokedynamic #140, 0 // InvokeDynamic #11:invoke:(Ljava/lang/Object;)Ljava/lang/Object;
191: dup
192: astore_3
193: pop
194: aload 13
196: pop
197: goto 85
200: aload 5
202: areturn
203: nop
204: athrow
public java.lang.Object padNumber(java.lang.Object, java.lang.Object);
Code:
0: ldc #156 // String
2: aload_1
3: invokedynamic #159, 0 // InvokeDynamic #7:invoke:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
8: astore_3
9: aload_3
10: pop
11: aload_2
12: aload_3
13: invokedynamic #160, 0 // InvokeDynamic #2:invoke:(Ljava/lang/Object;)Ljava/lang/Object;
18: invokedynamic #161, 0 // InvokeDynamic #8:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
23: astore 4
25: aload 4
27: pop
28: ldc #163 // class java/lang/StringBuffer
30: ldc #165 // String
32: aload 4
34: invokedynamic #166, 0 // InvokeDynamic #6:invoke:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
39: invokedynamic #171, 0 // InvokeDynamic #13:init:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
44: astore 5
46: aload 5
48: pop
49: aload 5
51: aload_3
52: invokedynamic #174, 0 // InvokeDynamic #14:invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
57: pop
58: aload 5
60: invokedynamic #177, 0 // InvokeDynamic #15:invoke:(Ljava/lang/Object;)Ljava/lang/Object;
65: areturn
66: nop
67: athrow
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #188 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class nsieve
6: if_acmpeq 14
9: aload_0
10: invokestatic #192 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #194 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #188 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #200 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #194 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #203 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
}
Static Compilation
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 42: [Static type checking] - The variable [args] is undeclared.
@ line 42, column 5.
if (args.length > 0)
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 43: [Static type checking] - The variable [args] is undeclared.
@ line 43, column 9.
n = args[0].toInteger()
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 44: [Static type checking] - Cannot find matching method java.lang.Object#compareTo(int). Please check if the declared type is right and if the method exists.
@ line 44, column 5.
if (n < 2)
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 47: [Static type checking] - Cannot find matching method int#leftShift(java.lang.Object). Please check if the declared type is right and if the method exists.
@ line 47, column 9.
def m = (1 << n) * 10000
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 50: [Static type checking] - Cannot find matching method java.lang.Object#minus(int). Please check if the declared type is right and if the method exists.
@ line 50, column 5.
[n, n-1, n-2].each {
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 50: [Static type checking] - Cannot find matching method java.lang.Object#minus(int). Please check if the declared type is right and if the method exists.
@ line 50, column 10.
[n, n-1, n-2].each {
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 51: [Static type checking] - Cannot find matching method int#leftShift(java.lang.Object). Please check if the declared type is right and if the method exists.
@ line 51, column 13.
def k = (1<<it) * 10000
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 13: [Static type checking] - Cannot find matching method int#compareTo(java.lang.Object). Please check if the declared type is right and if the method exists.
@ line 13, column 12.
while (i <= m) {
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 14: [Static type checking] - Cannot find matching method java.lang.Object#getAt(int). Please check if the declared type is right and if the method exists.
@ line 14, column 9.
primes[i] = true
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 19: [Static type checking] - Cannot find matching method int#compareTo(java.lang.Object). Please check if the declared type is right and if the method exists.
@ line 19, column 12.
while (i <= m) {
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 20: [Static type checking] - Cannot find matching method java.lang.Object#getAt(int). Please check if the declared type is right and if the method exists.
@ line 20, column 13.
if (primes[i]) {
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 22: [Static type checking] - Cannot find matching method int#compareTo(java.lang.Object). Please check if the declared type is right and if the method exists.
@ line 22, column 20.
while (k <= m) {
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 23: [Static type checking] - Cannot find matching method java.lang.Object#getAt(int). Please check if the declared type is right and if the method exists.
@ line 23, column 17.
primes[k] = false
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 35: [Static type checking] - Cannot find matching method java.lang.Object#minus(int). Please check if the declared type is right and if the method exists.
@ line 35, column 30.
def numSpaces = fieldLen - bareNumber.length()
^
/Users/jstrater/Documents/dev/groovy-compiler-project/build/resources/test/scripts/nsieve.groovy: 36: [Static type checking] - Cannot find matching method java.lang.String#multiply(java.lang.Object). Please check if the declared type is right and if the method exists.
@ line 36, column 31.
def sb = new StringBuffer(' ' * numSpaces)
^
15 errors
Groovyc (Legacy)
Compiled from "nsieve.groovy"
public class nsieve$_run_closure1 extends groovy.lang.Closure implements org.codehaus.groovy.runtime.GeneratedClosure {
public static transient boolean __$stMC;
public nsieve$_run_closure1(java.lang.Object, java.lang.Object, groovy.lang.Reference);
Code:
0: invokestatic #27 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore 4
5: aload_0
6: aload_1
7: aload_2
8: invokespecial #30 // Method groovy/lang/Closure."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
11: aload_3
12: astore 5
14: aload 5
16: aload_0
17: swap
18: putfield #32 // Field flags:Lgroovy/lang/Reference;
21: return
public java.lang.Object doCall(java.lang.Object);
Code:
0: invokestatic #27 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_2
4: aload_2
5: ldc #40 // int 0
7: aaload
8: aload_2
9: ldc #41 // int 1
11: aaload
12: iconst_1
13: invokestatic #47 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
16: aload_1
17: invokeinterface #53, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
22: sipush 10000
25: invokestatic #47 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
28: invokeinterface #53, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.call:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
33: astore_3
34: aload_2
35: ldc #54 // int 2
37: aaload
38: aload_0
39: aload_3
40: bipush 8
42: invokestatic #47 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
45: invokeinterface #58, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
50: astore 4
52: aload_2
53: ldc #59 // int 3
55: aaload
56: aload_0
57: aload_2
58: ldc #60 // int 4
60: aaload
61: aload_0
62: aload_3
63: aload_0
64: getfield #32 // Field flags:Lgroovy/lang/Reference;
67: invokevirtual #65 // Method groovy/lang/Reference.get:()Ljava/lang/Object;
70: invokeinterface #58, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
75: bipush 9
77: invokestatic #47 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
80: invokeinterface #58, 4 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
85: astore 5
87: aload_2
88: ldc #66 // int 5
90: aaload
91: aload_0
92: new #68 // class org/codehaus/groovy/runtime/GStringImpl
95: dup
96: iconst_2
97: anewarray #70 // class java/lang/Object
100: dup
101: iconst_0
102: aload 4
104: aastore
105: dup
106: iconst_1
107: aload 5
109: aastore
110: iconst_3
111: anewarray #72 // class java/lang/String
114: dup
115: iconst_0
116: ldc #74 // String Primes up to
118: aastore
119: dup
120: iconst_1
121: ldc #76 // String
123: aastore
124: dup
125: iconst_2
126: ldc #76 // String
128: aastore
129: invokespecial #79 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
132: invokeinterface #82, 3 // InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callCurrent:(Lgroovy/lang/GroovyObject;Ljava/lang/Object;)Ljava/lang/Object;
137: areturn
138: aconst_null
139: areturn
public java.lang.Object getFlags();
Code:
0: invokestatic #27 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_1
4: aload_0
5: getfield #32 // Field flags:Lgroovy/lang/Reference;
8: invokevirtual #65 // Method groovy/lang/Reference.get:()Ljava/lang/Object;
11: areturn
12: aconst_null
13: areturn
public java.lang.Object doCall();
Code:
0: invokestatic #27 // Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_1
4: aload_0
5: aconst_null
6: invokevirtual #89 // Method doCall:(Ljava/lang/Object;)Ljava/lang/Object;
9: areturn
10: aconst_null
11: areturn
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #95 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class nsieve$_run_closure1
6: if_acmpeq 14
9: aload_0
10: invokestatic #101 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #103 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #95 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #109 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #103 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #112 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
}
Invoke Dynamic
Compiled from "nsieve.groovy"
public class nsieve$_run_closure1 extends groovy.lang.Closure implements org.codehaus.groovy.runtime.GeneratedClosure {
public static transient boolean __$stMC;
public nsieve$_run_closure1(java.lang.Object, java.lang.Object, groovy.lang.Reference);
Code:
0: aload_0
1: aload_1
2: aload_2
3: invokespecial #24 // Method groovy/lang/Closure."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
6: aload_3
7: astore 4
9: aload 4
11: aload_0
12: swap
13: putfield #26 // Field flags:Lgroovy/lang/Reference;
16: return
public java.lang.Object doCall(java.lang.Object);
Code:
0: iconst_1
1: aload_1
2: invokedynamic #47, 0 // InvokeDynamic #0:invoke:(ILjava/lang/Object;)Ljava/lang/Object;
7: sipush 10000
10: invokedynamic #52, 0 // InvokeDynamic #1:invoke:(Ljava/lang/Object;I)Ljava/lang/Object;
15: astore_2
16: aload_0
17: aload_2
18: bipush 8
20: invokedynamic #58, 0 // InvokeDynamic #2:invoke:(Lnsieve$_run_closure1;Ljava/lang/Object;I)Ljava/lang/Object;
25: astore_3
26: aload_0
27: aload_0
28: aload_2
29: aload_0
30: getfield #26 // Field flags:Lgroovy/lang/Reference;
33: invokevirtual #63 // Method groovy/lang/Reference.get:()Ljava/lang/Object;
36: invokedynamic #68, 0 // InvokeDynamic #3:invoke:(Lnsieve$_run_closure1;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
41: bipush 9
43: invokedynamic #58, 0 // InvokeDynamic #2:invoke:(Lnsieve$_run_closure1;Ljava/lang/Object;I)Ljava/lang/Object;
48: astore 4
50: aload_0
51: new #70 // class org/codehaus/groovy/runtime/GStringImpl
54: dup
55: iconst_2
56: anewarray #72 // class java/lang/Object
59: dup
60: iconst_0
61: aload_3
62: aastore
63: dup
64: iconst_1
65: aload 4
67: aastore
68: iconst_3
69: anewarray #74 // class java/lang/String
72: dup
73: iconst_0
74: ldc #76 // String Primes up to
76: aastore
77: dup
78: iconst_1
79: ldc #78 // String
81: aastore
82: dup
83: iconst_2
84: ldc #78 // String
86: aastore
87: invokespecial #81 // Method org/codehaus/groovy/runtime/GStringImpl."<init>":([Ljava/lang/Object;[Ljava/lang/String;)V
90: invokedynamic #86, 0 // InvokeDynamic #4:invoke:(Lnsieve$_run_closure1;Lgroovy/lang/GString;)Ljava/lang/Object;
95: areturn
96: nop
97: athrow
public java.lang.Object getFlags();
Code:
0: aload_0
1: getfield #26 // Field flags:Lgroovy/lang/Reference;
4: invokevirtual #63 // Method groovy/lang/Reference.get:()Ljava/lang/Object;
7: areturn
8: nop
9: athrow
public java.lang.Object doCall();
Code:
0: aload_0
1: aconst_null
2: invokevirtual #95 // Method doCall:(Ljava/lang/Object;)Ljava/lang/Object;
5: areturn
6: nop
7: athrow
protected groovy.lang.MetaClass $getStaticMetaClass();
Code:
0: aload_0
1: invokevirtual #101 // Method java/lang/Object.getClass:()Ljava/lang/Class;
4: ldc #2 // class nsieve$_run_closure1
6: if_acmpeq 14
9: aload_0
10: invokestatic #107 // Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.initMetaClass:(Ljava/lang/Object;)Lgroovy/lang/MetaClass;
13: areturn
14: getstatic #109 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
17: astore_1
18: aload_1
19: ifnonnull 34
22: aload_0
23: invokevirtual #101 // Method java/lang/Object.getClass:()Ljava/lang/Class;
26: invokestatic #115 // Method org/codehaus/groovy/reflection/ClassInfo.getClassInfo:(Ljava/lang/Class;)Lorg/codehaus/groovy/reflection/ClassInfo;
29: dup
30: astore_1
31: putstatic #109 // Field $staticClassInfo:Lorg/codehaus/groovy/reflection/ClassInfo;
34: aload_1
35: invokevirtual #118 // Method org/codehaus/groovy/reflection/ClassInfo.getMetaClass:()Lgroovy/lang/MetaClass;
38: areturn
}