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