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