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