Home | History | Annotate | Download | only in packed-switch
      1 # Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
      2 # for details. All rights reserved. Use of this source code is governed by a
      3 # BSD-style license that can be found in the LICENSE file.
      4 
      5 .class public LTest;
      6 
      7 .super Ljava/lang/Object;
      8 
      9 # Empty packed switch
     10 .method public static test1(I)I
     11   .registers 1
     12   packed-switch v0, :packed_switch_data
     13   const/4 v0, 0x1
     14   return v0
     15 
     16   :packed_switch_data
     17   .packed-switch 0x0
     18   .end packed-switch
     19 .end method
     20 
     21 # Empty packed switch after data
     22 .method public static test2(I)I
     23   .registers 1
     24 
     25   goto :packed_switch
     26 
     27   :packed_switch_data
     28   .packed-switch 0x0
     29   .end packed-switch
     30 
     31   :packed_switch
     32   packed-switch v0, :packed_switch_data
     33   const/4 v0, 0x2
     34   return v0
     35 .end method
     36 
     37 # Packed switch after data
     38 .method public static test3(I)I
     39   .registers 1
     40 
     41   goto :packed_switch
     42 
     43   :case_0
     44   const/4 v0, 0x3
     45   goto :return
     46 
     47   :packed_switch_data
     48   .packed-switch 0x0
     49     :case_0
     50     :case_1
     51   .end packed-switch
     52 
     53   :packed_switch
     54   packed-switch v0, :packed_switch_data
     55   const/4 v0, 0x5
     56   goto :return
     57 
     58   :case_1
     59   const/4 v0, 0x4
     60 
     61   :return
     62   return v0
     63 .end method
     64 
     65 .method public static main([Ljava/lang/String;)V
     66     .locals 2
     67 
     68     sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
     69 
     70     const/4 v1, 0x0
     71     invoke-static {v1}, LTest;->test1(I)I
     72     move-result v1
     73     invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
     74     move-result-object v1
     75     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/Object;)V
     76 
     77     const/4 v1, 0x0
     78     invoke-static {v1}, LTest;->test2(I)I
     79     move-result v1
     80     invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
     81     move-result-object v1
     82     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/Object;)V
     83 
     84     const/4 v1, 0x0
     85     invoke-static {v1}, LTest;->test3(I)I
     86     move-result v1
     87     invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
     88     move-result-object v1
     89     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/Object;)V
     90 
     91     const/4 v1, 0x1
     92     invoke-static {v1}, LTest;->test3(I)I
     93     move-result v1
     94     invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
     95     move-result-object v1
     96     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/Object;)V
     97 
     98     const/4 v1, 0x2
     99     invoke-static {v1}, LTest;->test3(I)I
    100     move-result v1
    101     invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
    102     move-result-object v1
    103     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/Object;)V
    104 
    105     return-void
    106 .end method
    107