1 2 method Base$Inner.<init>(Base):void 3 { 4 ............................. begin block 1 ............................. 5 0| move-object v0, v4 6 1| move-object v1, v5 7 2| move-object v2, v0 8 3| move-object v3, v1 9 4| iput-object v3, v2, Base$Inner.this$0 10 .............................. end block 1 .............................. 11 ............................. begin block 2 ............................. 12 6| move-object v2, v0 13 7| invoke-direct {v2}, java.lang.Object.<init>():void 14 .............................. end block 2 .............................. 15 ............................. begin block 3 ............................. 16 10| return-void 17 .............................. end block 3 .............................. 18 } 19 20 method Base$Nested.<init>():void 21 { 22 ............................. begin block 1 ............................. 23 0| move-object v0, v2 24 1| move-object v1, v0 25 2| invoke-direct {v1}, java.lang.Object.<init>():void 26 .............................. end block 1 .............................. 27 ............................. begin block 2 ............................. 28 5| return-void 29 .............................. end block 2 .............................. 30 } 31 32 method Base.<init>():void 33 { 34 ............................. begin block 1 ............................. 35 0| move-object v0, v2 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.test(int):void 45 { 46 ............................. begin block 1 ............................. 47 0| move-object v0, v6 48 1| move v1, v7 49 2| invoke-static {}, Hello.printStackTrace():void 50 .............................. end block 1 .............................. 51 ............................. begin block 2 ............................. 52 5| sget-object v2, java.lang.System.out 53 .............................. end block 2 .............................. 54 ............................. begin block 3 ............................. 55 7| new-instance v3, java.lang.StringBuilder 56 .............................. end block 3 .............................. 57 ............................. begin block 4 ............................. 58 9| move-object v5, v3 59 10| move-object v3, v5 60 11| move-object v4, v5 61 12| invoke-direct {v4}, java.lang.StringBuilder.<init>():void 62 .............................. end block 4 .............................. 63 ............................. begin block 5 ............................. 64 15| const-string v4, "Base.test " 65 .............................. end block 5 .............................. 66 ............................. begin block 6 ............................. 67 17| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder 68 .............................. end block 6 .............................. 69 ............................. begin block 7 ............................. 70 20| move-result-object v3 71 21| move v4, v1 72 22| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(int):java.lang.StringBuilder 73 .............................. end block 7 .............................. 74 ............................. begin block 8 ............................. 75 25| move-result-object v3 76 26| invoke-virtual {v3}, java.lang.StringBuilder.toString():java.lang.String 77 .............................. end block 8 .............................. 78 ............................. begin block 9 ............................. 79 29| move-result-object v3 80 30| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void 81 .............................. end block 9 .............................. 82 ............................. begin block 10 ............................. 83 33| return-void 84 .............................. end block 10 .............................. 85 } 86 87 method Derived.<init>():void 88 { 89 ............................. begin block 1 ............................. 90 0| move-object v0, v2 91 1| move-object v1, v0 92 2| invoke-direct {v1}, Base.<init>():void 93 .............................. end block 1 .............................. 94 ............................. begin block 2 ............................. 95 5| return-void 96 .............................. end block 2 .............................. 97 } 98 99 method Derived.test(int):void 100 { 101 ............................. begin block 1 ............................. 102 0| move-object v0, v6 103 1| move v1, v7 104 2| sget-object v2, java.lang.System.out 105 .............................. end block 1 .............................. 106 ............................. begin block 2 ............................. 107 4| new-instance v3, java.lang.StringBuilder 108 .............................. end block 2 .............................. 109 ............................. begin block 3 ............................. 110 6| move-object v5, v3 111 7| move-object v3, v5 112 8| move-object v4, v5 113 9| invoke-direct {v4}, java.lang.StringBuilder.<init>():void 114 .............................. end block 3 .............................. 115 ............................. begin block 4 ............................. 116 12| const-string v4, "Derived.test " 117 .............................. end block 4 .............................. 118 ............................. begin block 5 ............................. 119 14| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder 120 .............................. end block 5 .............................. 121 ............................. begin block 6 ............................. 122 17| move-result-object v3 123 18| move v4, v1 124 19| invoke-virtual {v3,v4}, java.lang.StringBuilder.append(int):java.lang.StringBuilder 125 .............................. end block 6 .............................. 126 ............................. begin block 7 ............................. 127 22| move-result-object v3 128 23| invoke-virtual {v3}, java.lang.StringBuilder.toString():java.lang.String 129 .............................. end block 7 .............................. 130 ............................. begin block 8 ............................. 131 26| move-result-object v3 132 27| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void 133 .............................. end block 8 .............................. 134 ............................. begin block 9 ............................. 135 30| return-void 136 .............................. end block 9 .............................. 137 } 138 139 method Hello.<init>():void 140 { 141 ............................. begin block 1 ............................. 142 0| move-object v0, v2 143 1| move-object v1, v0 144 2| invoke-direct {v1}, java.lang.Object.<init>():void 145 .............................. end block 1 .............................. 146 ............................. begin block 2 ............................. 147 5| return-void 148 .............................. end block 2 .............................. 149 } 150 151 method Hello.main(java.lang.String[]):void 152 { 153 ............................. begin block 1 ............................. 154 0| move-object v0, v6 155 1| sget-object v2, java.lang.System.out 156 .............................. end block 1 .............................. 157 ............................. begin block 2 ............................. 158 3| const-string v3, "-------------------------------------------------------\n" 159 .............................. end block 2 .............................. 160 ............................. begin block 3 ............................. 161 5| const/4 v4, #+0 (0x00000000 | 0.00000) 162 6| new-array v4, v4, java.lang.Object[] 163 .............................. end block 3 .............................. 164 ............................. begin block 4 ............................. 165 8| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 166 .............................. end block 4 .............................. 167 ............................. begin block 5 ............................. 168 11| move-result-object v2 169 12| sget-object v2, java.lang.System.out 170 .............................. end block 5 .............................. 171 ............................. begin block 6 ............................. 172 14| const-string v3, "Hello, world (original)" 173 .............................. end block 6 .............................. 174 ............................. begin block 7 ............................. 175 16| invoke-virtual {v2,v3}, java.io.PrintStream.println(java.lang.String):void 176 .............................. end block 7 .............................. 177 ............................. begin block 8 ............................. 178 19| sget-object v2, java.lang.System.out 179 .............................. end block 8 .............................. 180 ............................. begin block 9 ............................. 181 21| const-string v3, "-------------------------------------------------------\n" 182 .............................. end block 9 .............................. 183 ............................. begin block 10 ............................. 184 23| const/4 v4, #+0 (0x00000000 | 0.00000) 185 24| new-array v4, v4, java.lang.Object[] 186 .............................. end block 10 .............................. 187 ............................. begin block 11 ............................. 188 26| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 189 .............................. end block 11 .............................. 190 ............................. begin block 12 ............................. 191 29| move-result-object v2 192 30| new-instance v2, Base 193 .............................. end block 12 .............................. 194 ............................. begin block 13 ............................. 195 32| move-object v5, v2 196 33| move-object v2, v5 197 34| move-object v3, v5 198 35| invoke-direct {v3}, Base.<init>():void 199 .............................. end block 13 .............................. 200 ............................. begin block 14 ............................. 201 38| move-object v1, v2 202 39| move-object v2, v1 203 40| const/4 v3, #+1 (0x00000001 | 1.40130e-45) 204 41| invoke-virtual {v2,v3}, Base.test(int):void 205 .............................. end block 14 .............................. 206 ............................. begin block 15 ............................. 207 44| sget-object v2, java.lang.System.out 208 .............................. end block 15 .............................. 209 ............................. begin block 16 ............................. 210 46| const-string v3, "-------------------------------------------------------\n" 211 .............................. end block 16 .............................. 212 ............................. begin block 17 ............................. 213 48| const/4 v4, #+0 (0x00000000 | 0.00000) 214 49| new-array v4, v4, java.lang.Object[] 215 .............................. end block 17 .............................. 216 ............................. begin block 18 ............................. 217 51| invoke-virtual {v2,v3,v4}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 218 .............................. end block 18 .............................. 219 ............................. begin block 19 ............................. 220 54| move-result-object v2 221 55| new-instance v2, Derived 222 .............................. end block 19 .............................. 223 ............................. begin block 20 ............................. 224 57| move-object v5, v2 225 58| move-object v2, v5 226 59| move-object v3, v5 227 60| invoke-direct {v3}, Derived.<init>():void 228 .............................. end block 20 .............................. 229 ............................. begin block 21 ............................. 230 63| move-object v1, v2 231 64| move-object v2, v1 232 65| const/4 v3, #+2 (0x00000002 | 2.80260e-45) 233 66| invoke-virtual {v2,v3}, Base.test(int):void 234 .............................. end block 21 .............................. 235 ............................. begin block 22 ............................. 236 69| return-void 237 .............................. end block 22 .............................. 238 } 239 240 method Hello.printStackTrace():void 241 { 242 ............................. begin block 1 ............................. 243 0| new-instance v5, java.lang.Throwable 244 .............................. end block 1 .............................. 245 ............................. begin block 2 ............................. 246 2| move-object v11, v5 247 3| move-object v5, v11 248 4| move-object v6, v11 249 5| invoke-direct {v6}, java.lang.Throwable.<init>():void 250 .............................. end block 2 .............................. 251 ............................. begin block 3 ............................. 252 8| invoke-virtual {v5}, java.lang.Throwable.getStackTrace():java.lang.StackTraceElement[] 253 .............................. end block 3 .............................. 254 ............................. begin block 4 ............................. 255 11| move-result-object v5 256 12| move-object v0, v5 257 13| move-object v5, v0 258 14| move-object v1, v5 259 15| move-object v5, v1 260 16| array-length v5, v5 261 .............................. end block 4 .............................. 262 ............................. begin block 5 ............................. 263 17| move v2, v5 264 18| const/4 v5, #+0 (0x00000000 | 0.00000) 265 19| move v3, v5 266 .............................. end block 5 .............................. 267 ............................. begin block 6 ............................. 268 Label_1: 269 20| move v5, v3 270 21| move v6, v2 271 22| if-ge v5, v6, Label_2 272 .............................. end block 6 .............................. 273 ............................. begin block 7 ............................. 274 24| move-object v5, v1 275 25| move v6, v3 276 26| aget-object v5, v5, v6 277 .............................. end block 7 .............................. 278 ............................. begin block 8 ............................. 279 28| move-object v4, v5 280 29| sget-object v5, java.lang.System.out 281 .............................. end block 8 .............................. 282 ............................. begin block 9 ............................. 283 31| const-string v6, " %s\n" 284 .............................. end block 9 .............................. 285 ............................. begin block 10 ............................. 286 33| const/4 v7, #+1 (0x00000001 | 1.40130e-45) 287 34| new-array v7, v7, java.lang.Object[] 288 .............................. end block 10 .............................. 289 ............................. begin block 11 ............................. 290 36| move-object v11, v7 291 37| move-object v7, v11 292 38| move-object v8, v11 293 39| const/4 v9, #+0 (0x00000000 | 0.00000) 294 40| move-object v10, v4 295 41| invoke-virtual {v10}, java.lang.StackTraceElement.toString():java.lang.String 296 .............................. end block 11 .............................. 297 ............................. begin block 12 ............................. 298 44| move-result-object v10 299 45| aput-object v10, v8, v9 300 .............................. end block 12 .............................. 301 ............................. begin block 13 ............................. 302 47| invoke-virtual {v5,v6,v7}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 303 .............................. end block 13 .............................. 304 ............................. begin block 14 ............................. 305 50| move-result-object v5 306 51| add-int/lit8 v3, v3, #+1 (0x00000001 | 1.40130e-45) 307 53| goto Label_1 308 .............................. end block 14 .............................. 309 ............................. begin block 15 ............................. 310 Label_2: 311 54| return-void 312 .............................. end block 15 .............................. 313 } 314