1*f0dffb02SXin Li 2*f0dffb02SXin Limethod A.<init>():void 3*f0dffb02SXin Li{ 4*f0dffb02SXin Li .src "tryCatch.java" 5*f0dffb02SXin Li .line 2 6*f0dffb02SXin Li .prologue_end 7*f0dffb02SXin Li .line 2 8*f0dffb02SXin Li 0| move-object v0, v2 9*f0dffb02SXin Li .local v0, "this", A 10*f0dffb02SXin Li 1| move-object v1, v0 11*f0dffb02SXin Li 2| invoke-direct {v1}, java.lang.Throwable.<init>():void 12*f0dffb02SXin Li 5| return-void 13*f0dffb02SXin Li} 14*f0dffb02SXin Li 15*f0dffb02SXin Limethod B.<init>():void 16*f0dffb02SXin Li{ 17*f0dffb02SXin Li .src "tryCatch.java" 18*f0dffb02SXin Li .line 6 19*f0dffb02SXin Li .prologue_end 20*f0dffb02SXin Li .line 6 21*f0dffb02SXin Li 0| move-object v0, v2 22*f0dffb02SXin Li .local v0, "this", B 23*f0dffb02SXin Li 1| move-object v1, v0 24*f0dffb02SXin Li 2| invoke-direct {v1}, java.lang.Throwable.<init>():void 25*f0dffb02SXin Li 5| return-void 26*f0dffb02SXin Li} 27*f0dffb02SXin Li 28*f0dffb02SXin Limethod TryCatch.<init>():void 29*f0dffb02SXin Li{ 30*f0dffb02SXin Li .src "tryCatch.java" 31*f0dffb02SXin Li .line 10 32*f0dffb02SXin Li .prologue_end 33*f0dffb02SXin Li .line 10 34*f0dffb02SXin Li 0| move-object v0, v2 35*f0dffb02SXin Li .local v0, "this", TryCatch 36*f0dffb02SXin Li 1| move-object v1, v0 37*f0dffb02SXin Li 2| invoke-direct {v1}, java.lang.Object.<init>():void 38*f0dffb02SXin Li 5| return-void 39*f0dffb02SXin Li} 40*f0dffb02SXin Li 41*f0dffb02SXin Limethod TryCatch.foo(int):int 42*f0dffb02SXin Li{ 43*f0dffb02SXin Li .params "?" 44*f0dffb02SXin Li .src "tryCatch.java" 45*f0dffb02SXin Li .line 27 46*f0dffb02SXin Li .prologue_end 47*f0dffb02SXin Li .line 27 48*f0dffb02SXin Li 0| move v0, v4 49*f0dffb02SXin Li .local v0, "x", int 50*f0dffb02SXin Li 1| move v1, v0 51*f0dffb02SXin Li 2| if-lez v1, Label_4 52*f0dffb02SXin Li .line 28 53*f0dffb02SXin Li 4| move v1, v0 54*f0dffb02SXin Li 5| packed-switch v1, Label_5 55*f0dffb02SXin Li .line 31 56*f0dffb02SXin Li 8| const/4 v1, #+1 (0x00000001 | 1.40130e-45) 57*f0dffb02SXin Li 9| move v0, v1 58*f0dffb02SXin LiLabel_1: 59*f0dffb02SXin Li .line 34 60*f0dffb02SXin Li .end_local v0 61*f0dffb02SXin Li 10| return v0 62*f0dffb02SXin LiLabel_2: 63*f0dffb02SXin Li .line 29 64*f0dffb02SXin Li .restart_local v0 65*f0dffb02SXin Li 11| new-instance v1, A 66*f0dffb02SXin Li 13| move-object v3, v1 67*f0dffb02SXin Li 14| move-object v1, v3 68*f0dffb02SXin Li 15| move-object v2, v3 69*f0dffb02SXin Li 16| invoke-direct {v2}, A.<init>():void 70*f0dffb02SXin Li 19| throw v1 71*f0dffb02SXin LiLabel_3: 72*f0dffb02SXin Li .line 30 73*f0dffb02SXin Li 20| new-instance v1, B 74*f0dffb02SXin Li 22| move-object v3, v1 75*f0dffb02SXin Li 23| move-object v1, v3 76*f0dffb02SXin Li 24| move-object v2, v3 77*f0dffb02SXin Li 25| invoke-direct {v2}, B.<init>():void 78*f0dffb02SXin Li 28| throw v1 79*f0dffb02SXin LiLabel_4: 80*f0dffb02SXin Li .line 34 81*f0dffb02SXin Li 29| const/4 v1, #+0 (0x00000000 | 0.00000) 82*f0dffb02SXin Li 30| move v0, v1 83*f0dffb02SXin Li 31| goto Label_1 84*f0dffb02SXin LiLabel_5: <aligned> 85*f0dffb02SXin Li .line 28 86*f0dffb02SXin Li 32| packed-switch-payload 87*f0dffb02SXin Li 1: Label_2 88*f0dffb02SXin Li 2: Label_3 89*f0dffb02SXin Li} 90*f0dffb02SXin Li 91*f0dffb02SXin Limethod TryCatch.main(java.lang.String[]):void 92*f0dffb02SXin Li{ 93*f0dffb02SXin Li .params "?" 94*f0dffb02SXin Li .src "tryCatch.java" 95*f0dffb02SXin Li .line 15 96*f0dffb02SXin Li .prologue_end 97*f0dffb02SXin Li .line 15 98*f0dffb02SXin Li 0| move-object v0, v6 99*f0dffb02SXin Li .local v0, "args", java.lang.String[] 100*f0dffb02SXin Li 1| const/4 v3, #+0 (0x00000000 | 0.00000) 101*f0dffb02SXin Li .try_begin_1 102*f0dffb02SXin Li 2| invoke-static {v3}, TryCatch.foo(int):int 103*f0dffb02SXin Li .try_end_1 104*f0dffb02SXin Li catch(B) : Label_3 105*f0dffb02SXin Li catch(A) : Label_4 106*f0dffb02SXin Li catch(...) : Label_5 107*f0dffb02SXin Li 5| move-result v3 108*f0dffb02SXin LiLabel_1: 109*f0dffb02SXin Li .line 18 110*f0dffb02SXin Li .line 22 111*f0dffb02SXin Li 6| sget-object v3, java.lang.System.out 112*f0dffb02SXin Li 8| const-string v4, "finally\n" 113*f0dffb02SXin Li 10| const/4 v5, #+0 (0x00000000 | 0.00000) 114*f0dffb02SXin Li 11| new-array v5, v5, java.lang.Object[] 115*f0dffb02SXin Li 13| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 116*f0dffb02SXin Li 16| move-result-object v3 117*f0dffb02SXin LiLabel_2: 118*f0dffb02SXin Li .line 23 119*f0dffb02SXin Li .line 24 120*f0dffb02SXin Li 17| return-void 121*f0dffb02SXin LiLabel_3: 122*f0dffb02SXin Li .line 16 123*f0dffb02SXin Li 18| move-exception v3 124*f0dffb02SXin Li 19| move-object v1, v3 125*f0dffb02SXin Li .try_begin_2 126*f0dffb02SXin Li .line 17 127*f0dffb02SXin Li .local v1, "ex", B 128*f0dffb02SXin Li 20| sget-object v3, java.lang.System.out 129*f0dffb02SXin Li 22| const-string v4, "catch: B\n" 130*f0dffb02SXin Li 24| const/4 v5, #+0 (0x00000000 | 0.00000) 131*f0dffb02SXin Li 25| new-array v5, v5, java.lang.Object[] 132*f0dffb02SXin Li 27| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 133*f0dffb02SXin Li .try_end_2 134*f0dffb02SXin Li catch(A) : Label_4 135*f0dffb02SXin Li catch(...) : Label_5 136*f0dffb02SXin Li 30| move-result-object v3 137*f0dffb02SXin Li 31| goto Label_1 138*f0dffb02SXin LiLabel_4: 139*f0dffb02SXin Li .line 19 140*f0dffb02SXin Li .end_local v1 141*f0dffb02SXin Li 32| move-exception v3 142*f0dffb02SXin Li 33| move-object v1, v3 143*f0dffb02SXin Li .try_begin_3 144*f0dffb02SXin Li .line 20 145*f0dffb02SXin Li .local v1, "ex", A 146*f0dffb02SXin Li 34| sget-object v3, java.lang.System.out 147*f0dffb02SXin Li 36| const-string v4, "catch: A\n" 148*f0dffb02SXin Li 38| const/4 v5, #+0 (0x00000000 | 0.00000) 149*f0dffb02SXin Li 39| new-array v5, v5, java.lang.Object[] 150*f0dffb02SXin Li 41| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 151*f0dffb02SXin Li .try_end_3 152*f0dffb02SXin Li catch(...) : Label_5 153*f0dffb02SXin Li 44| move-result-object v3 154*f0dffb02SXin Li .line 22 155*f0dffb02SXin Li 45| sget-object v3, java.lang.System.out 156*f0dffb02SXin Li 47| const-string v4, "finally\n" 157*f0dffb02SXin Li 49| const/4 v5, #+0 (0x00000000 | 0.00000) 158*f0dffb02SXin Li 50| new-array v5, v5, java.lang.Object[] 159*f0dffb02SXin Li 52| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 160*f0dffb02SXin Li 55| move-result-object v3 161*f0dffb02SXin Li .line 23 162*f0dffb02SXin Li 56| goto Label_2 163*f0dffb02SXin LiLabel_5: 164*f0dffb02SXin Li .line 22 165*f0dffb02SXin Li .end_local v1 166*f0dffb02SXin Li 57| move-exception v3 167*f0dffb02SXin Li 58| move-object v2, v3 168*f0dffb02SXin Li 59| sget-object v3, java.lang.System.out 169*f0dffb02SXin Li 61| const-string v4, "finally\n" 170*f0dffb02SXin Li 63| const/4 v5, #+0 (0x00000000 | 0.00000) 171*f0dffb02SXin Li 64| new-array v5, v5, java.lang.Object[] 172*f0dffb02SXin Li 66| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 173*f0dffb02SXin Li 69| move-result-object v3 174*f0dffb02SXin Li 70| move-object v3, v2 175*f0dffb02SXin Li 71| throw v3 176*f0dffb02SXin Li} 177