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