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