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