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