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