• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.method public <init>()V
19    .limit locals 2
20    .limit stack 3
21
22    aload_0
23    dup
24    dup
25    astore_1
26    pop2
27    return
28.end method
29
30; Test jsr and jsr_w.
31.method public test_jsr()Ljava/lang/Object;
32    .limit locals 3
33    .limit stack 4
34    aload_0
35    jsr j1
36    aload_0
37    pop
38    ; Call j1 with different locals
39    ldc 10
40    astore_0
41    jsr j1
42    aload_0
43    pop
44    jsr j3
45    areturn
46j1:
47    astore_2
48    jsr_w j2
49    ret 2
50j2:
51    ; a subroutine with two returns and a catch block
52    astore_1
53    dup
54    dup
55    ; Just something that could throw an exception...
56    invokevirtual blort.test_jsr()V
57    ifnonnull j2a
58    ret_w 1
59j2a:
60    ret_w 1
61j3:
62    ; a subroutine that does not return
63    pop
64    areturn
65catchBlock:
66    areturn
67
68.catch java/lang/Throwable from j2 to j2a using catchBlock
69.end method
70
71
72