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