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