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