1
2method Base$Inner.<init>(Base):void
3{
4............................. begin block 1 .............................
5	.params "?"
6	.src "hello.java"
7	.line 8
8	.prologue_end
9	.line 8
10	    0| move-object v0, v4
11	.local v0, "this", Base$Inner
12	    1| move-object v1, v5
13	.local v1, "this$0", Base
14	    2| move-object v2, v0
15	    3| move-object v3, v1
16	    4| iput-object v3, v2, Base$Inner.this$0
17	    6| move-object v2, v0
18	    7| invoke-direct {v2}, java.lang.Object.<init>():void
19	   10| return-void
20.............................. end block 1 ..............................
21}
22
23method Base$Nested.<init>():void
24{
25............................. begin block 1 .............................
26	.src "hello.java"
27	.line 4
28	.prologue_end
29	.line 4
30	    0| move-object v0, v2
31	.local v0, "this", Base$Nested
32	    1| move-object v1, v0
33	    2| invoke-direct {v1}, java.lang.Object.<init>():void
34	    5| return-void
35.............................. end block 1 ..............................
36}
37
38method Base.<init>():void
39{
40............................. begin block 1 .............................
41	.src "hello.java"
42	.line 2
43	.prologue_end
44	.line 2
45	    0| move-object v0, v2
46	.local v0, "this", Base
47	    1| move-object v1, v0
48	    2| invoke-direct {v1}, java.lang.Object.<init>():void
49	    5| return-void
50.............................. end block 1 ..............................
51}
52
53method Base.test(int):void
54{
55............................. begin block 1 .............................
56	.params "?"
57	.src "hello.java"
58	.line 14
59	.prologue_end
60	.line 14
61	    0| move-object v0, v6
62	.local v0, "this", Base
63	    1| move v1, v7
64	.local v1, "n", int
65	    2| invoke-static {}, Hello.printStackTrace():void
66	.line 15
67	    5| sget-object v2, java.lang.System.out
68	    7| new-instance v3, java.lang.StringBuilder
69	    9| move-object v5, v3
70	   10| move-object v3, v5
71	   11| move-object v4, v5
72	   12| invoke-direct {v4}, java.lang.StringBuilder.<init>():void
73	   15| const-string v4, "Base.test "
74	   17| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
75	   20| move-result-object v3
76	   21| move v4, v1
77	   22| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(int):java.lang.StringBuilder
78	   25| move-result-object v3
79	   26| invoke-virtual {v3}, java.lang.StringBuilder.toString():java.lang.String
80	   29| move-result-object v3
81	   30| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void
82	.line 16
83	   33| return-void
84.............................. end block 1 ..............................
85}
86
87method Derived.<init>():void
88{
89............................. begin block 1 .............................
90	.src "hello.java"
91	.line 19
92	.prologue_end
93	.line 19
94	    0| move-object v0, v2
95	.local v0, "this", Derived
96	    1| move-object v1, v0
97	    2| invoke-direct {v1}, Base.<init>():void
98	    5| return-void
99.............................. end block 1 ..............................
100}
101
102method Derived.test(int):void
103{
104............................. begin block 1 .............................
105	.params "?"
106	.src "hello.java"
107	.line 23
108	.prologue_end
109	.line 23
110	    0| move-object v0, v6
111	.local v0, "this", Derived
112	    1| move v1, v7
113	.local v1, "n", int
114	    2| sget-object v2, java.lang.System.out
115	    4| new-instance v3, java.lang.StringBuilder
116	    6| move-object v5, v3
117	    7| move-object v3, v5
118	    8| move-object v4, v5
119	    9| invoke-direct {v4}, java.lang.StringBuilder.<init>():void
120	   12| const-string v4, "Derived.test "
121	   14| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
122	   17| move-result-object v3
123	   18| move v4, v1
124	   19| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(int):java.lang.StringBuilder
125	   22| move-result-object v3
126	   23| invoke-virtual {v3}, java.lang.StringBuilder.toString():java.lang.String
127	   26| move-result-object v3
128	   27| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void
129	.line 24
130	   30| return-void
131.............................. end block 1 ..............................
132}
133
134method Hello.<init>():void
135{
136............................. begin block 1 .............................
137	.src "hello.java"
138	.line 27
139	.prologue_end
140	.line 27
141	    0| move-object v0, v2
142	.local v0, "this", Hello
143	    1| move-object v1, v0
144	    2| invoke-direct {v1}, java.lang.Object.<init>():void
145	    5| return-void
146.............................. end block 1 ..............................
147}
148
149method Hello.main(java.lang.String[]):void
150{
151............................. begin block 1 .............................
152	.params "?"
153	.src "hello.java"
154	.line 31
155	.prologue_end
156	.line 31
157	    0| move-object v0, v6
158	.local v0, "args", java.lang.String[]
159	    1| sget-object v2, java.lang.System.out
160	    3| const-string v3, "-------------------------------------------------------\n"
161	    5| const/4 v4, #+0 (0x00000000 | 0.00000)
162	    6| new-array v4, v4, java.lang.Object[]
163	    8| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
164	   11| move-result-object v2
165	.line 32
166	   12| sget-object v2, java.lang.System.out
167	   14| const-string v3, "Hello, world (original)"
168	   16| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void
169	.line 36
170	   19| sget-object v2, java.lang.System.out
171	   21| const-string v3, "-------------------------------------------------------\n"
172	   23| const/4 v4, #+0 (0x00000000 | 0.00000)
173	   24| new-array v4, v4, java.lang.Object[]
174	   26| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
175	   29| move-result-object v2
176	.line 37
177	   30| new-instance v2, Base
178	   32| move-object v5, v2
179	   33| move-object v2, v5
180	   34| move-object v3, v5
181	   35| invoke-direct {v3}, Base.<init>():void
182	   38| move-object v1, v2
183	.line 38
184	.local v1, "x", Base
185	   39| move-object v2, v1
186	   40| const/4 v3, #+1 (0x00000001 | 1.40130e-45)
187	   41| invoke-virtual {v2,v3}, Base.test(int):void
188	.line 40
189	   44| sget-object v2, java.lang.System.out
190	   46| const-string v3, "-------------------------------------------------------\n"
191	   48| const/4 v4, #+0 (0x00000000 | 0.00000)
192	   49| new-array v4, v4, java.lang.Object[]
193	   51| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
194	   54| move-result-object v2
195	.line 41
196	   55| new-instance v2, Derived
197	   57| move-object v5, v2
198	   58| move-object v2, v5
199	   59| move-object v3, v5
200	   60| invoke-direct {v3}, Derived.<init>():void
201	   63| move-object v1, v2
202	.line 42
203	   64| move-object v2, v1
204	   65| const/4 v3, #+2 (0x00000002 | 2.80260e-45)
205	   66| invoke-virtual {v2,v3}, Base.test(int):void
206	.line 43
207	   69| return-void
208.............................. end block 1 ..............................
209}
210
211method Hello.printStackTrace():void
212{
213............................. begin block 1 .............................
214	.src "hello.java"
215	.line 47
216	.prologue_end
217	.line 47
218	    0| new-instance v5, java.lang.Throwable
219	    2| move-object v11, v5
220	    3| move-object v5, v11
221	    4| move-object v6, v11
222	    5| invoke-direct {v6}, java.lang.Throwable.<init>():void
223	    8| invoke-virtual {v5}, java.lang.Throwable.getStackTrace():java.lang.StackTraceElement[]
224	   11| move-result-object v5
225	   12| move-object v0, v5
226	.line 48
227	.local v0, "callstack", java.lang.StackTraceElement[]
228	   13| move-object v5, v0
229	   14| move-object v1, v5
230	   15| move-object v5, v1
231	   16| array-length v5, v5
232	   17| move v2, v5
233	   18| const/4 v5, #+0 (0x00000000 | 0.00000)
234	   19| move v3, v5
235.............................. end block 1 ..............................
236............................. begin block 2 .............................
237Label_1:
238	   20| move v5, v3
239	   21| move v6, v2
240	   22| if-ge v5, v6, Label_2
241.............................. end block 2 ..............................
242............................. begin block 3 .............................
243	   24| move-object v5, v1
244	   25| move v6, v3
245	   26| aget-object v5, v5, v6
246	   28| move-object v4, v5
247	.line 50
248	.local v4, "e", java.lang.StackTraceElement
249	   29| sget-object v5, java.lang.System.out
250	   31| const-string v6, "   %s\n"
251	   33| const/4 v7, #+1 (0x00000001 | 1.40130e-45)
252	   34| new-array v7, v7, java.lang.Object[]
253	   36| move-object v11, v7
254	   37| move-object v7, v11
255	   38| move-object v8, v11
256	   39| const/4 v9, #+0 (0x00000000 | 0.00000)
257	   40| move-object v10, v4
258	   41| invoke-virtual {v10}, java.lang.StackTraceElement.toString():java.lang.String
259	   44| move-result-object v10
260	   45| aput-object v10, v8, v9
261	   47| invoke-virtual {v5,v6,v7}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
262	   50| move-result-object v5
263	.line 48
264	   51| add-int/lit8 v3, v3, #+1 (0x00000001 | 1.40130e-45)
265	   53| goto Label_1
266.............................. end block 3 ..............................
267............................. begin block 4 .............................
268Label_2:
269	.line 52
270	.end_local v4
271	   54| return-void
272.............................. end block 4 ..............................
273}
274
275method Hello.wrapTest(Base, int):void
276{
277............................. begin block 1 .............................
278	.params "?", "?"
279	.src "hello.java"
280	.line 56
281	.prologue_end
282	.line 56
283	    0| move-object v0, v9
284	.local v0, "_this", Base
285	    1| move v1, v10
286	.local v1, "n", int
287	    2| sget-object v2, java.lang.System.out
288	    4| const-string v3, ">>> %s.test(int n = %d)\n"
289	    6| const/4 v4, #+2 (0x00000002 | 2.80260e-45)
290	    7| new-array v4, v4, java.lang.Object[]
291	    9| move-object v8, v4
292	   10| move-object v4, v8
293	   11| move-object v5, v8
294	   12| const/4 v6, #+0 (0x00000000 | 0.00000)
295	   13| move-object v7, v0
296	   14| invoke-virtual {v7}, java.lang.Object.getClass():java.lang.Class
297	   17| move-result-object v7
298	   18| invoke-virtual {v7}, java.lang.Class.getName():java.lang.String
299	   21| move-result-object v7
300	   22| aput-object v7, v5, v6
301	   24| move-object v8, v4
302	   25| move-object v4, v8
303	   26| move-object v5, v8
304	   27| const/4 v6, #+1 (0x00000001 | 1.40130e-45)
305	   28| move v7, v1
306	   29| invoke-static {v7}, java.lang.Integer.valueOf(int):java.lang.Integer
307	   32| move-result-object v7
308	   33| aput-object v7, v5, v6
309	   35| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
310	   38| move-result-object v2
311	.line 57
312	   39| move-object v2, v0
313	   40| move v3, v1
314	   41| invoke-virtual {v2,v3}, Base.test(int):void
315	.line 58
316	   44| return-void
317.............................. end block 1 ..............................
318}
319