Home | History | Annotate | Download | only in art
      1 # Copyright (C) 2017 The Android Open Source Project
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #      http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 #
     15 # The standard dx/jack/d8 all would leave the move-exception instructions outside of either catch
     16 # block. This is different from the RI which will leave the corresponding aload.
     17 #
     18 # See b/65203529 for more information.
     19 
     20 .class public final Lart/Test1929$Impl;
     21 .super Ljava/lang/Object;
     22 .source "Test1929.java"
     23 
     24 
     25 # annotations
     26 .annotation system Ldalvik/annotation/EnclosingClass;
     27     value = Lart/Test1929;
     28 .end annotation
     29 
     30 .annotation system Ldalvik/annotation/InnerClass;
     31     accessFlags = 0x19
     32     name = "Impl"
     33 .end annotation
     34 
     35 
     36 # direct methods
     37 .method private constructor <init>()V
     38     .registers 1
     39 
     40     .prologue
     41     .line 152
     42     invoke-direct {p0}, Ljava/lang/Object;-><init>()V
     43 
     44     return-void
     45 .end method
     46 
     47 .method public static throwCatchBaseTestExceptionTwiceImpl()V
     48     .registers 4
     49 
     50     .prologue
     51     .line 156
     52     :try_start_0
     53     new-instance v1, Lart/Test1929$TestException;
     54 
     55     const-string v2, "throwCatchBaseTestExceptionTwice"
     56 
     57     invoke-direct {v1, v2}, Lart/Test1929$TestException;-><init>(Ljava/lang/String;)V
     58 
     59     throw v1
     60     :try_end_8
     61     .catch Lart/Test1929$BaseTestException; {:try_start_0 .. :try_end_8} :catch_8
     62 
     63     .line 157
     64     :catch_8
     65     # This try needs to include the move-exception
     66     :try_start_9
     67     move-exception v0
     68 
     69     .line 158
     70     .local v0, "t":Lart/Test1929$BaseTestException;
     71     sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
     72 
     73     new-instance v2, Ljava/lang/StringBuilder;
     74 
     75     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
     76 
     77     const-string v3, "Caught "
     78 
     79     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
     80 
     81     move-result-object v2
     82 
     83     invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
     84 
     85     move-result-object v3
     86 
     87     invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;
     88 
     89     move-result-object v3
     90 
     91     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
     92 
     93     move-result-object v2
     94 
     95     const-string v3, ": \""
     96 
     97     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
     98 
     99     move-result-object v2
    100 
    101     invoke-virtual {v0}, Lart/Test1929$BaseTestException;->getMessage()Ljava/lang/String;
    102 
    103     move-result-object v3
    104 
    105     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    106 
    107     move-result-object v2
    108 
    109     const-string v3, "\""
    110 
    111     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    112 
    113     move-result-object v2
    114 
    115     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    116 
    117     move-result-object v2
    118 
    119     invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
    120 
    121     .line 159
    122     sget-boolean v1, Lart/Test1929;->PRINT_FULL_EXCEPTION:Z
    123 
    124     if-eqz v1, :cond_46
    125 
    126     .line 160
    127     sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
    128 
    129     invoke-virtual {v0, v1}, Lart/Test1929$BaseTestException;->printStackTrace(Ljava/io/PrintStream;)V
    130     :try_end_46
    131     .catch Lart/Test1929$BaseTestException; {:try_start_9 .. :try_end_46} :catch_47
    132 
    133     .line 169
    134     :cond_46
    135     :goto_46
    136     return-void
    137 
    138     .line 163
    139     :catch_47
    140     move-exception v0
    141 
    142     .line 164
    143     sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
    144 
    145     new-instance v2, Ljava/lang/StringBuilder;
    146 
    147     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    148 
    149     const-string v3, "2nd Caught "
    150 
    151     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    152 
    153     move-result-object v2
    154 
    155     invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
    156 
    157     move-result-object v3
    158 
    159     invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;
    160 
    161     move-result-object v3
    162 
    163     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    164 
    165     move-result-object v2
    166 
    167     const-string v3, ": \""
    168 
    169     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    170 
    171     move-result-object v2
    172 
    173     invoke-virtual {v0}, Lart/Test1929$BaseTestException;->getMessage()Ljava/lang/String;
    174 
    175     move-result-object v3
    176 
    177     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    178 
    179     move-result-object v2
    180 
    181     const-string v3, "\""
    182 
    183     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    184 
    185     move-result-object v2
    186 
    187     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    188 
    189     move-result-object v2
    190 
    191     invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
    192 
    193     .line 165
    194     sget-boolean v1, Lart/Test1929;->PRINT_FULL_EXCEPTION:Z
    195 
    196     if-eqz v1, :cond_46
    197 
    198     .line 166
    199     sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
    200 
    201     invoke-virtual {v0, v1}, Lart/Test1929$BaseTestException;->printStackTrace(Ljava/io/PrintStream;)V
    202 
    203     goto :goto_46
    204 .end method
    205 
    206 .method public static throwCatchTestExceptionTwiceImpl()V
    207     .registers 4
    208 
    209     .prologue
    210     .line 174
    211     :try_start_0
    212     new-instance v1, Lart/Test1929$TestException;
    213 
    214     const-string v2, "throwCatchTestExceptionTwice"
    215 
    216     invoke-direct {v1, v2}, Lart/Test1929$TestException;-><init>(Ljava/lang/String;)V
    217 
    218     throw v1
    219     :try_end_8
    220     .catch Lart/Test1929$TestException; {:try_start_0 .. :try_end_8} :catch_8
    221 
    222     .line 175
    223     :catch_8
    224     # This try needs to include the move-exception
    225     :try_start_9
    226     move-exception v0
    227 
    228     .line 176
    229     .local v0, "t":Lart/Test1929$TestException;
    230     sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
    231 
    232     new-instance v2, Ljava/lang/StringBuilder;
    233 
    234     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    235 
    236     const-string v3, "Caught "
    237 
    238     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    239 
    240     move-result-object v2
    241 
    242     invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
    243 
    244     move-result-object v3
    245 
    246     invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;
    247 
    248     move-result-object v3
    249 
    250     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    251 
    252     move-result-object v2
    253 
    254     const-string v3, ": \""
    255 
    256     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    257 
    258     move-result-object v2
    259 
    260     invoke-virtual {v0}, Lart/Test1929$TestException;->getMessage()Ljava/lang/String;
    261 
    262     move-result-object v3
    263 
    264     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    265 
    266     move-result-object v2
    267 
    268     const-string v3, "\""
    269 
    270     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    271 
    272     move-result-object v2
    273 
    274     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    275 
    276     move-result-object v2
    277 
    278     invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
    279 
    280     .line 177
    281     sget-boolean v1, Lart/Test1929;->PRINT_FULL_EXCEPTION:Z
    282 
    283     if-eqz v1, :cond_46
    284 
    285     .line 178
    286     sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
    287 
    288     invoke-virtual {v0, v1}, Lart/Test1929$TestException;->printStackTrace(Ljava/io/PrintStream;)V
    289     :try_end_46
    290     .catch Lart/Test1929$TestException; {:try_start_9 .. :try_end_46} :catch_47
    291 
    292     .line 187
    293     :cond_46
    294     :goto_46
    295     return-void
    296 
    297     .line 181
    298     :catch_47
    299     move-exception v0
    300 
    301     .line 182
    302     sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
    303 
    304     new-instance v2, Ljava/lang/StringBuilder;
    305 
    306     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
    307 
    308     const-string v3, "2nd Caught "
    309 
    310     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    311 
    312     move-result-object v2
    313 
    314     invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
    315 
    316     move-result-object v3
    317 
    318     invoke-virtual {v3}, Ljava/lang/Class;->getName()Ljava/lang/String;
    319 
    320     move-result-object v3
    321 
    322     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    323 
    324     move-result-object v2
    325 
    326     const-string v3, ": \""
    327 
    328     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    329 
    330     move-result-object v2
    331 
    332     invoke-virtual {v0}, Lart/Test1929$TestException;->getMessage()Ljava/lang/String;
    333 
    334     move-result-object v3
    335 
    336     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    337 
    338     move-result-object v2
    339 
    340     const-string v3, "\""
    341 
    342     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    343 
    344     move-result-object v2
    345 
    346     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    347 
    348     move-result-object v2
    349 
    350     invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
    351 
    352     .line 183
    353     sget-boolean v1, Lart/Test1929;->PRINT_FULL_EXCEPTION:Z
    354 
    355     if-eqz v1, :cond_46
    356 
    357     .line 184
    358     sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
    359 
    360     invoke-virtual {v0, v1}, Lart/Test1929$TestException;->printStackTrace(Ljava/io/PrintStream;)V
    361 
    362     goto :goto_46
    363 .end method
    364