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