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