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