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