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