1
2method Base.<init>():void
3{
4	.src "entryHooks.java"
5	.line 27
6	.prologue_end
7	.line 27
8	    0| move-object v0, v2
9	.local v0, "this", Base
10	    1| move-object v1, v0
11	    2| invoke-direct {v1}, java.lang.Object.<init>():void
12	    5| return-void
13}
14
15method Base.foo(int, java.lang.String):int
16{
17	.params "?", "?"
18	.src "entryHooks.java"
19	.line 31
20	.prologue_end
21	.line 31
22	    0| move-object v0, v10
23	.local v0, "this", Base
24	    1| move v1, v11
25	.local v1, "x", int
26	    2| move-object v2, v12
27	.local v2, "msg", java.lang.String
28	    3| sget-object v3, java.lang.System.out
29	    5| const-string v4, "Base.foo(%d, '%s')\n"
30	    7| const/4 v5, #+2 (0x00000002 | 2.80260e-45)
31	    8| new-array v5, v5, java.lang.Object[]
32	   10| move-object v9, v5
33	   11| move-object v5, v9
34	   12| move-object v6, v9
35	   13| const/4 v7, #+0 (0x00000000 | 0.00000)
36	   14| move v8, v1
37	   15| invoke-static {v8}, java.lang.Integer.valueOf(int):java.lang.Integer
38	   18| move-result-object v8
39	   19| aput-object v8, v6, v7
40	   21| move-object v9, v5
41	   22| move-object v5, v9
42	   23| move-object v6, v9
43	   24| const/4 v7, #+1 (0x00000001 | 1.40130e-45)
44	   25| move-object v8, v2
45	   26| aput-object v8, v6, v7
46	   28| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
47	   31| move-result-object v3
48	.line 32
49	   32| move v3, v1
50	   33| move v0, v3
51	.end_local v0
52	   34| return v0
53}
54
55method Derived.<init>():void
56{
57	.src "entryHooks.java"
58	.line 36
59	.prologue_end
60	.line 36
61	    0| move-object v0, v2
62	.local v0, "this", Derived
63	    1| move-object v1, v0
64	    2| invoke-direct {v1}, Base.<init>():void
65	    5| return-void
66}
67
68method Derived.foo(int, java.lang.String):int
69{
70	.params "?", "?"
71	.src "entryHooks.java"
72	.line 40
73	.prologue_end
74	.line 40
75	    0| move-object v0, v10
76	.local v0, "this", Derived
77	    1| move v1, v11
78	.local v1, "x", int
79	    2| move-object v2, v12
80	.local v2, "msg", java.lang.String
81	    3| sget-object v3, java.lang.System.out
82	    5| const-string v4, "Derived.foo(%d, '%s')\n"
83	    7| const/4 v5, #+2 (0x00000002 | 2.80260e-45)
84	    8| new-array v5, v5, java.lang.Object[]
85	   10| move-object v9, v5
86	   11| move-object v5, v9
87	   12| move-object v6, v9
88	   13| const/4 v7, #+0 (0x00000000 | 0.00000)
89	   14| move v8, v1
90	   15| invoke-static {v8}, java.lang.Integer.valueOf(int):java.lang.Integer
91	   18| move-result-object v8
92	   19| aput-object v8, v6, v7
93	   21| move-object v9, v5
94	   22| move-object v5, v9
95	   23| move-object v6, v9
96	   24| const/4 v7, #+1 (0x00000001 | 1.40130e-45)
97	   25| move-object v8, v2
98	   26| aput-object v8, v6, v7
99	   28| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
100	   31| move-result-object v3
101	.line 41
102	   32| move v3, v1
103	   33| const/4 v4, #+2 (0x00000002 | 2.80260e-45)
104	   34| mul-int/lit8 v3, v3, #+2 (0x00000002 | 2.80260e-45)
105	   36| move v0, v3
106	.end_local v0
107	   37| return v0
108}
109
110method Target.<init>():void
111{
112	.src "entryHooks.java"
113	.line 45
114	.prologue_end
115	.line 45
116	    0| move-object v0, v2
117	.local v0, "this", Target
118	    1| move-object v1, v0
119	    2| invoke-direct {v1}, java.lang.Object.<init>():void
120	    5| return-void
121}
122
123method Target.main(java.lang.String[]):void
124{
125	.params "?"
126	.src "entryHooks.java"
127	.line 51
128	.prologue_end
129	.line 51
130	    0| move-object v0, v8
131	.local v0, "args", java.lang.String[]
132	    1| sget-object v1, java.lang.System.out
133	    3| const-string v2, "Hello, world!"
134	    5| invoke-virtual {v1,v2}, java.io.PrintStream.println(java.lang.String):void
135	.line 52
136	    8| sget-object v1, java.lang.System.out
137	   10| const-string v2, "final = %d\n"
138	   12| const/4 v3, #+1 (0x00000001 | 1.40130e-45)
139	   13| new-array v3, v3, java.lang.Object[]
140	   15| move-object v7, v3
141	   16| move-object v3, v7
142	   17| move-object v4, v7
143	   18| const/4 v5, #+0 (0x00000000 | 0.00000)
144	   19| invoke-static {}, Target.test():int
145	   22| move-result v6
146	   23| invoke-static {v6}, java.lang.Integer.valueOf(int):java.lang.Integer
147	   26| move-result-object v6
148	   27| aput-object v6, v4, v5
149	   29| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
150	   32| move-result-object v1
151	.line 53
152	   33| sget-object v1, java.lang.System.out
153	   35| const-string v2, "Good bye!"
154	   37| invoke-virtual {v1,v2}, java.io.PrintStream.println(java.lang.String):void
155	.line 54
156	   40| return-void
157}
158
159method Target.test():int
160{
161	.src "entryHooks.java"
162	.line 58
163	.prologue_end
164	.line 58
165	    0| new-instance v1, Target
166	    2| move-object v4, v1
167	    3| move-object v1, v4
168	    4| move-object v2, v4
169	    5| invoke-direct {v2}, Target.<init>():void
170	    8| move-object v0, v1
171	.line 59
172	.local v0, "obj", Target
173	    9| move-object v1, v0
174	   10| new-instance v2, Derived
175	   12| move-object v4, v2
176	   13| move-object v2, v4
177	   14| move-object v3, v4
178	   15| invoke-direct {v3}, Derived.<init>():void
179	   18| iput-object v2, v1, Target.test
180	.line 60
181	   20| move-object v1, v0
182	   21| const/4 v2, #+3 (0x00000003 | 4.20390e-45)
183	   22| const-string v3, "Testing..."
184	   24| invoke-virtual {v1,v2,v3}, Target.foo(int, java.lang.String):int
185	   27| move-result v1
186	   28| move v0, v1
187	.end_local v0
188	   29| return v0
189}
190
191method Target.foo(int):int
192{
193	.params "?"
194	.src "entryHooks.java"
195	.line 74
196	.prologue_end
197	.line 74
198	    0| move-object v0, v3
199	.local v0, "this", Target
200	    1| move v1, v4
201	.local v1, "x", int
202	    2| const/4 v2, #+1 (0x00000001 | 1.40130e-45)
203	    3| move v0, v2
204	.end_local v0
205	    4| return v0
206}
207
208method Target.foo(int, int):int
209{
210	.params "?", "?"
211	.src "entryHooks.java"
212	.line 75
213	.prologue_end
214	.line 75
215	    0| move-object v0, v4
216	.local v0, "this", Target
217	    1| move v1, v5
218	.local v1, "x", int
219	    2| move v2, v6
220	.local v2, "y", int
221	    3| const/4 v3, #+2 (0x00000002 | 2.80260e-45)
222	    4| move v0, v3
223	.end_local v0
224	    5| return v0
225}
226
227method Target.foo(int, java.lang.String):int
228{
229	.params "?", "?"
230	.src "entryHooks.java"
231	.line 65
232	.prologue_end
233	.line 65
234	    0| move-object v0, v9
235	.local v0, "this", Target
236	    1| move v1, v10
237	.local v1, "x", int
238	    2| move-object v2, v11
239	.local v2, "msg", java.lang.String
240	    3| const/4 v5, #+0 (0x00000000 | 0.00000)
241	    4| move v3, v5
242	.line 66
243	.local v3, "sum", int
244	    5| const/4 v5, #+0 (0x00000000 | 0.00000)
245	    6| move v4, v5
246Label_1:
247	.local v4, "i", int
248	    7| move v5, v4
249	    8| move v6, v1
250	    9| if-ge v5, v6, Label_2
251	.line 68
252	   11| move v5, v3
253	   12| move-object v6, v0
254	   13| iget-object v6, v6, Target.test
255	   15| move v7, v4
256	   16| move-object v8, v2
257	   17| invoke-virtual {v6,v7,v8}, Base.foo(int, java.lang.String):int
258	   20| move-result v6
259	   21| add-int/2addr v5, v6
260	   22| move v3, v5
261	.line 66
262	   23| add-int/lit8 v4, v4, #+1 (0x00000001 | 1.40130e-45)
263	   25| goto Label_1
264Label_2:
265	.line 70
266	   26| move v5, v3
267	   27| move v0, v5
268	.end_local v0
269	   28| return v0
270}
271
272method Target.foo(int, java.lang.String, java.lang.String):int
273{
274	.params "?", "?", "?"
275	.src "entryHooks.java"
276	.line 76
277	.prologue_end
278	.line 76
279	    0| move-object v0, v5
280	.local v0, "this", Target
281	    1| move v1, v6
282	.local v1, "x", int
283	    2| move-object v2, v7
284	.local v2, "msg", java.lang.String
285	    3| move-object v3, v8
286	.local v3, "msg2", java.lang.String
287	    4| const/4 v4, #+3 (0x00000003 | 4.20390e-45)
288	    5| move v0, v4
289	.end_local v0
290	    6| return v0
291}
292
293method Target.foo(int, java.lang.String[]):int
294{
295	.params "?", "?"
296	.src "entryHooks.java"
297	.line 77
298	.prologue_end
299	.line 77
300	    0| move-object v0, v4
301	.local v0, "this", Target
302	    1| move v1, v5
303	.local v1, "x", int
304	    2| move-object v2, v6
305	.local v2, "msgs", java.lang.String[]
306	    3| const/4 v3, #+4 (0x00000004 | 5.60519e-45)
307	    4| move v0, v3
308	.end_local v0
309	    5| return v0
310}
311
312method Target.foo(int, java.lang.String[][]):java.lang.Integer
313{
314	.params "?", "?"
315	.src "entryHooks.java"
316	.line 78
317	.prologue_end
318	.line 78
319	    0| move-object v0, v4
320	.local v0, "this", Target
321	    1| move v1, v5
322	.local v1, "x", int
323	    2| move-object v2, v6
324	.local v2, "msgs", java.lang.String[][]
325	    3| const/4 v3, #+5 (0x00000005 | 7.00649e-45)
326	    4| invoke-static {v3}, java.lang.Integer.valueOf(int):java.lang.Integer
327	    7| move-result-object v3
328	    8| move-object v0, v3
329	.end_local v0
330	    9| return-object v0
331}
332
333method Target.foo():void
334{
335	.src "entryHooks.java"
336	.line 73
337	.prologue_end
338	.line 73
339	    0| return-void
340}
341
342method Tracer.<init>():void
343{
344	.src "entryHooks.java"
345	.line 2
346	.prologue_end
347	.line 2
348	    0| move-object v0, v2
349	.local v0, "this", Tracer
350	    1| move-object v1, v0
351	    2| invoke-direct {v1}, java.lang.Object.<init>():void
352	    5| return-void
353}
354
355method Tracer.onEntry(java.lang.String):void
356{
357	.params "?"
358	.src "entryHooks.java"
359	.line 6
360	.prologue_end
361	.line 6
362	    0| move-object v0, v5
363	.local v0, "methodName", java.lang.String
364	    1| sget-object v1, java.lang.System.out
365	    3| new-instance v2, java.lang.StringBuilder
366	    5| move-object v4, v2
367	    6| move-object v2, v4
368	    7| move-object v3, v4
369	    8| invoke-direct {v3}, java.lang.StringBuilder.<init>():void
370	   11| const-string v3, "OnEntry("
371	   13| invoke-virtual {v2,v3}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
372	   16| move-result-object v2
373	   17| move-object v3, v0
374	   18| invoke-virtual {v2,v3}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
375	   21| move-result-object v2
376	   22| const-string v3, ")"
377	   24| invoke-virtual {v2,v3}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
378	   27| move-result-object v2
379	   28| invoke-virtual {v2}, java.lang.StringBuilder.toString():java.lang.String
380	   31| move-result-object v2
381	   32| invoke-virtual {v1,v2}, java.io.PrintStream.println(java.lang.String):void
382	.line 7
383	   35| return-void
384}
385
386method Tracer.onFooEntry(Target, int, java.lang.String):void
387{
388	.params "?", "?", "?"
389	.src "entryHooks.java"
390	.line 11
391	.prologue_end
392	.line 11
393	    0| move-object v0, v10
394	.local v0, "__this", Target
395	    1| move v1, v11
396	.local v1, "x", int
397	    2| move-object v2, v12
398	.local v2, "msg", java.lang.String
399	    3| sget-object v3, java.lang.System.out
400	    5| const-string v4, ">>> onFooEntry(%s, %d, %s)\n"
401	    7| const/4 v5, #+3 (0x00000003 | 4.20390e-45)
402	    8| new-array v5, v5, java.lang.Object[]
403	   10| move-object v9, v5
404	   11| move-object v5, v9
405	   12| move-object v6, v9
406	   13| const/4 v7, #+0 (0x00000000 | 0.00000)
407	   14| move-object v8, v0
408	   15| aput-object v8, v6, v7
409	   17| move-object v9, v5
410	   18| move-object v5, v9
411	   19| move-object v6, v9
412	   20| const/4 v7, #+1 (0x00000001 | 1.40130e-45)
413	   21| move v8, v1
414	   22| invoke-static {v8}, java.lang.Integer.valueOf(int):java.lang.Integer
415	   25| move-result-object v8
416	   26| aput-object v8, v6, v7
417	   28| move-object v9, v5
418	   29| move-object v5, v9
419	   30| move-object v6, v9
420	   31| const/4 v7, #+2 (0x00000002 | 2.80260e-45)
421	   32| move-object v8, v2
422	   33| aput-object v8, v6, v7
423	   35| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
424	   38| move-result-object v3
425	.line 12
426	   39| return-void
427}
428
429method Tracer.onFooExit(int):int
430{
431	.params "?"
432	.src "entryHooks.java"
433	.line 16
434	.prologue_end
435	.line 16
436	    0| move v0, v8
437	.local v0, "retValue", int
438	    1| sget-object v1, java.lang.System.out
439	    3| const-string v2, ">>> onFooExit(%d)\n"
440	    5| const/4 v3, #+1 (0x00000001 | 1.40130e-45)
441	    6| new-array v3, v3, java.lang.Object[]
442	    8| move-object v7, v3
443	    9| move-object v3, v7
444	   10| move-object v4, v7
445	   11| const/4 v5, #+0 (0x00000000 | 0.00000)
446	   12| move v6, v0
447	   13| invoke-static {v6}, java.lang.Integer.valueOf(int):java.lang.Integer
448	   16| move-result-object v6
449	   17| aput-object v6, v4, v5
450	   19| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
451	   22| move-result-object v1
452	.line 17
453	   23| move v1, v0
454	   24| const/16 v2, #+100 (0x00000064 | 1.40130e-43)
455	   26| add-int/lit8 v1, v1, #+100 (0x00000064 | 1.40130e-43)
456	   28| move v0, v1
457	.end_local v0
458	   29| return v0
459}
460
461method Tracer.wrapFoo(Base, int, java.lang.String):int
462{
463	.params "?", "?", "?"
464	.src "entryHooks.java"
465	.line 22
466	.prologue_end
467	.line 22
468	    0| move-object v0, v10
469	.local v0, "_this", Base
470	    1| move v1, v11
471	.local v1, "x", int
472	    2| move-object v2, v12
473	.local v2, "msg", java.lang.String
474	    3| sget-object v3, java.lang.System.out
475	    5| const-string v4, ">>> %s.test(%d, %s)\n"
476	    7| const/4 v5, #+3 (0x00000003 | 4.20390e-45)
477	    8| new-array v5, v5, java.lang.Object[]
478	   10| move-object v9, v5
479	   11| move-object v5, v9
480	   12| move-object v6, v9
481	   13| const/4 v7, #+0 (0x00000000 | 0.00000)
482	   14| move-object v8, v0
483	   15| invoke-virtual {v8}, java.lang.Object.getClass():java.lang.Class
484	   18| move-result-object v8
485	   19| invoke-virtual {v8}, java.lang.Class.getName():java.lang.String
486	   22| move-result-object v8
487	   23| aput-object v8, v6, v7
488	   25| move-object v9, v5
489	   26| move-object v5, v9
490	   27| move-object v6, v9
491	   28| const/4 v7, #+1 (0x00000001 | 1.40130e-45)
492	   29| move v8, v1
493	   30| invoke-static {v8}, java.lang.Integer.valueOf(int):java.lang.Integer
494	   33| move-result-object v8
495	   34| aput-object v8, v6, v7
496	   36| move-object v9, v5
497	   37| move-object v5, v9
498	   38| move-object v6, v9
499	   39| const/4 v7, #+2 (0x00000002 | 2.80260e-45)
500	   40| move-object v8, v2
501	   41| aput-object v8, v6, v7
502	   43| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
503	   46| move-result-object v3
504	.line 23
505	   47| move-object v3, v0
506	   48| move v4, v1
507	   49| move-object v5, v2
508	   50| invoke-virtual {v3,v4,v5}, Base.foo(int, java.lang.String):int
509	   53| move-result v3
510	   54| const/16 v4, #+10 (0x0000000a | 1.40130e-44)
511	   56| add-int/lit8 v3, v3, #+10 (0x0000000a | 1.40130e-44)
512	   58| move v0, v3
513	.end_local v0
514	   59| return v0
515}
516