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 Label_1
151Label_3:
152	.line 63
153	   20| const-wide v2:v3, #+4612136378390124954 (0x400199999999999a | 2.20000)
154	   25| move-wide v0:v1, v2:v3
155	   26| goto Label_1
156Label_4:
157	.line 64
158	   27| const-wide v2:v3, #+4614613358185178726 (0x400a666666666666 | 3.30000)
159	   32| move-wide v0:v1, v2:v3
160	   33| goto Label_1
161Label_5: <aligned>
162	.line 60
163	   34| packed-switch-payload
164		    1: Label_2
165		    2: Label_3
166		    3: Label_4
167}
168
169method Target.testInt(int):int
170{
171	.params "?"
172	.src "exitHooks.java"
173	.line 71
174	.prologue_end
175	.line 71
176	    0| move-object v0, v3
177	.local v0, "this", Target
178	    1| move v1, v4
179	.local v1, "n", int
180	    2| move v2, v1
181	    3| sparse-switch v2, Label_5
182	.line 76
183	    6| const/16 v2, #+123 (0x0000007b | 1.72360e-43)
184	    8| move v0, v2
185Label_1:
186	.end_local v0
187	    9| return v0
188Label_2:
189	.line 73
190	.restart_local v0
191	   10| const/4 v2, #+1 (0x00000001 | 1.40130e-45)
192	   11| move v0, v2
193	   12| goto Label_1
194Label_3:
195	.line 74
196	   13| const/4 v2, #+2 (0x00000002 | 2.80260e-45)
197	   14| move v0, v2
198	   15| goto Label_1
199Label_4:
200	.line 75
201	   16| const/4 v2, #+3 (0x00000003 | 4.20390e-45)
202	   17| move v0, v2
203	   18| goto Label_1
204	.line 71
205	   19| nop
206Label_5: <aligned>
207	   20| sparse-switch-payload
208		   10: Label_2
209		   20: Label_3
210		   30: Label_4
211}
212
213method Target.testObject(boolean):java.lang.Object
214{
215	.params "?"
216	.src "exitHooks.java"
217	.line 49
218	.prologue_end
219	.line 49
220	    0| move-object v0, v5
221	.local v0, "this", Target
222	    1| move v1, v6
223	.local v1, "flag", boolean
224	    2| move v2, v1
225	    3| if-eqz v2, Label_2
226	.line 51
227	    5| sget-object v2, java.lang.System.out
228	    7| const-string v3, "Flag!\n"
229	    9| const/4 v4, #+0 (0x00000000 | 0.00000)
230	   10| new-array v4, v4, java.lang.Object[]
231	   12| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
232	   15| move-result-object v2
233	.line 52
234	   16| const-string v2, "Sigh"
235	   18| move-object v0, v2
236Label_1:
237	.line 55
238	.end_local v0
239	   19| return-object v0
240Label_2:
241	.restart_local v0
242	   20| const-string v2, "Blah"
243	   22| move-object v0, v2
244	   23| goto Label_1
245}
246
247method Target.testVoid(boolean):void
248{
249	.params "?"
250	.src "exitHooks.java"
251	.line 82
252	.prologue_end
253	.line 82
254	    0| move-object v0, v5
255	.local v0, "this", Target
256	    1| move v1, v6
257	.local v1, "flag", boolean
258	    2| move v2, v1
259	    3| if-eqz v2, Label_2
260	.line 84
261	    5| sget-object v2, java.lang.System.out
262	    7| const-string v3, "True!\n"
263	    9| const/4 v4, #+0 (0x00000000 | 0.00000)
264	   10| new-array v4, v4, java.lang.Object[]
265	   12| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
266	   15| move-result-object v2
267Label_1:
268	.line 85
269	.line 90
270	   16| return-void
271Label_2:
272	.line 89
273	   17| sget-object v2, java.lang.System.out
274	   19| const-string v3, "False!\n"
275	   21| const/4 v4, #+0 (0x00000000 | 0.00000)
276	   22| new-array v4, v4, java.lang.Object[]
277	   24| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
278	   27| move-result-object v2
279	.line 90
280	   28| goto Label_1
281}
282
283method Tracer.<init>():void
284{
285	.src "exitHooks.java"
286	.line 2
287	.prologue_end
288	.line 2
289	    0| move-object v0, v2
290	.local v0, "this", Tracer
291	    1| move-object v1, v0
292	    2| invoke-direct {v1}, java.lang.Object.<init>():void
293	    5| return-void
294}
295
296method Tracer.onExit(double):double
297{
298	.params "?"
299	.src "exitHooks.java"
300	.line 12
301	.prologue_end
302	.line 12
303	    0| move-wide v0:v1, v10:v11
304	.local v0, "value", double
305	    1| sget-object v2, java.lang.System.out
306	    3| const-string v3, ">>> onExit(double: %f)\n"
307	    5| const/4 v4, #+1 (0x00000001 | 1.40130e-45)
308	    6| new-array v4, v4, java.lang.Object[]
309	    8| move-object v9, v4
310	    9| move-object v4, v9
311	   10| move-object v5, v9
312	   11| const/4 v6, #+0 (0x00000000 | 0.00000)
313	   12| move-wide v7:v8, v0:v1
314	   13| invoke-static {v7,v8}, java.lang.Double.valueOf(double):java.lang.Double
315	   16| move-result-object v7
316	   17| aput-object v7, v5, v6
317	   19| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
318	   22| move-result-object v2
319	.line 13
320	   23| move-wide v2:v3, v0:v1
321	   24| neg-double v2:v3, v2:v3
322	   25| move-wide v0:v1, v2:v3
323	.end_local v0
324	   26| return-wide v0:v1
325}
326
327method Tracer.onExit(int):int
328{
329	.params "?"
330	.src "exitHooks.java"
331	.line 18
332	.prologue_end
333	.line 18
334	    0| move v0, v8
335	.local v0, "value", int
336	    1| sget-object v1, java.lang.System.out
337	    3| const-string v2, ">>> onExit(int: %d)\n"
338	    5| const/4 v3, #+1 (0x00000001 | 1.40130e-45)
339	    6| new-array v3, v3, java.lang.Object[]
340	    8| move-object v7, v3
341	    9| move-object v3, v7
342	   10| move-object v4, v7
343	   11| const/4 v5, #+0 (0x00000000 | 0.00000)
344	   12| move v6, v0
345	   13| invoke-static {v6}, java.lang.Integer.valueOf(int):java.lang.Integer
346	   16| move-result-object v6
347	   17| aput-object v6, v4, v5
348	   19| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
349	   22| move-result-object v1
350	.line 19
351	   23| move v1, v0
352	   24| const/16 v2, #+10 (0x0000000a | 1.40130e-44)
353	   26| mul-int/lit8 v1, v1, #+10 (0x0000000a | 1.40130e-44)
354	   28| move v0, v1
355	.end_local v0
356	   29| return v0
357}
358
359method Tracer.onExit(java.lang.Object):java.lang.Object
360{
361	.params "?"
362	.src "exitHooks.java"
363	.line 6
364	.prologue_end
365	.line 6
366	    0| move-object v0, v8
367	.local v0, "value", java.lang.Object
368	    1| sget-object v1, java.lang.System.out
369	    3| const-string v2, ">>> onExit(Object: %s)\n"
370	    5| const/4 v3, #+1 (0x00000001 | 1.40130e-45)
371	    6| new-array v3, v3, java.lang.Object[]
372	    8| move-object v7, v3
373	    9| move-object v3, v7
374	   10| move-object v4, v7
375	   11| const/4 v5, #+0 (0x00000000 | 0.00000)
376	   12| move-object v6, v0
377	   13| aput-object v6, v4, v5
378	   15| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
379	   18| move-result-object v1
380	.line 7
381	   19| move-object v1, v0
382	   20| move-object v0, v1
383	.end_local v0
384	   21| return-object v0
385}
386
387method Tracer.onExit():void
388{
389	.src "exitHooks.java"
390	.line 24
391	.prologue_end
392	.line 24
393	    0| sget-object v0, java.lang.System.out
394	    2| const-string v1, ">>> onExit(void)\n"
395	    4| const/4 v2, #+0 (0x00000000 | 0.00000)
396	    5| new-array v2, v2, java.lang.Object[]
397	    7| invoke-virtual {v0,v1,v2}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
398	   10| move-result-object v0
399	.line 25
400	   11| return-void
401}
402