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