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