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