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