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