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