1 2 method 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 27 method 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 44 method 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 61 method 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 113 method 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 130 method 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 178 method 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 195 method 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 299 method 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 ............................. 333 Label_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 ............................. 378 Label_2: 379 .line 52 380 .end_local v4 381 54| return-void 382 .............................. end block 15 .............................. 383 } 384 385 method 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