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