; Copyright (C) 2007 The Android Open Source Project ; ; Licensed under the Apache License, Version 2.0 (the "License"); ; you may not use this file except in compliance with the License. ; You may obtain a copy of the License at ; ; http://www.apache.org/licenses/LICENSE-2.0 ; ; Unless required by applicable law or agreed to in writing, software ; distributed under the License is distributed on an "AS IS" BASIS, ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ; See the License for the specific language governing permissions and ; limitations under the License. .class blort .super java/lang/Object .method public <init>()V .limit locals 2 .limit stack 3 aload_0 dup dup astore_1 pop2 return .end method ; Test jsr and jsr_w. .method public test_jsr()Ljava/lang/Object; .limit locals 3 .limit stack 4 aload_0 jsr j1 aload_0 pop ; Call j1 with different locals ldc 10 astore_0 jsr j1 aload_0 pop jsr j3 areturn j1: astore_2 jsr_w j2 ret 2 j2: ; a subroutine with two returns and a catch block astore_1 dup dup ; Just something that could throw an exception... invokevirtual blort.test_jsr()V ifnonnull j2a ret_w 1 j2a: ret_w 1 j3: ; a subroutine that does not return pop areturn catchBlock: areturn .catch java/lang/Throwable from j2 to j2a using catchBlock .end method