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