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