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