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