Home | History | Annotate | Download | only in sparse-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 sparse switch
     10 .method public static test1(I)I
     11   .registers 1
     12   sparse-switch v0, :sparse_switch_data
     13   const/4 v0, 0x1
     14   return v0
     15 
     16   :sparse_switch_data
     17   .sparse-switch
     18   .end sparse-switch
     19 .end method
     20 
     21 # Empty sparse switch after data
     22 .method public static test2(I)I
     23   .registers 1
     24 
     25   goto :sparse_switch
     26 
     27   :sparse_switch_data
     28   .sparse-switch
     29   .end sparse-switch
     30 
     31   :sparse_switch
     32   sparse-switch v0, :sparse_switch_data
     33   const/4 v0, 0x2
     34   return v0
     35 .end method
     36 
     37 # Sparse switch after data
     38 .method public static test3(I)I
     39   .registers 1
     40 
     41   goto :sparse_switch
     42 
     43   :case_2
     44   const/4 v0, 0x3
     45   goto :return
     46 
     47   :sparse_switch_data
     48   .sparse-switch
     49     0x2 -> :case_2
     50     0x4 -> :case_4
     51   .end sparse-switch
     52 
     53   :sparse_switch
     54   sparse-switch v0, :sparse_switch_data
     55   const/4 v0, 0x5
     56   goto :return
     57 
     58   :case_4
     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, 0x2
     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, 0x4
     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, 0x6
     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