Home | History | Annotate | Download | only in 085-dex-jsr-ret
      1 ; Copyright (C) 2007 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 .class blort
     16 .super java/lang/Object
     17 
     18 ; Test jsr and jsr_w.
     19 .method public test_jsr()Ljava/lang/Object;
     20     .limit locals 3
     21     .limit stack 4
     22     aload_0
     23     jsr j1
     24     aload_0
     25     pop
     26     ; Call j1 with different locals
     27     ldc 10
     28     istore_0
     29     jsr j1
     30     iload_0
     31     pop
     32     jsr j3
     33     areturn
     34 j1:
     35     astore_2
     36     jsr_w j2
     37     ret 2
     38 j2:
     39     ; a subroutine with two returns and a catch block
     40     astore_1
     41     dup
     42     dup
     43     ; Just something that could throw an exception...
     44     invokevirtual blort.test_jsr()V
     45     ifnonnull j2a
     46     ret_w 1
     47 j2a:
     48     ret_w 1
     49 j3:
     50     ; a subroutine that does not return
     51     pop
     52     areturn
     53 catchBlock:
     54     areturn
     55 
     56 .catch java/lang/Throwable from j2 to j2a using catchBlock
     57 .end method
     58