89c5f12e49cea9e0ab8dc0b232b62cb4518c7086
[cacao.git] / tests / regression / jasmin / test_verify_fail_jsr_multiple_returns.j
1 .class public test_verify_fail_jsr_multiple_returns
2 .super java/lang/Object
3
4 ; ======================================================================
5
6 .method public <init>()V
7    aload_0
8    invokenonvirtual java/lang/Object/<init>()V
9    return
10 .end method
11
12 ; ======================================================================
13
14 .method public static check(I)V
15         .limit locals 1
16         .limit stack 10
17         getstatic java/lang/System/out Ljava/io/PrintStream;
18         iload_0
19         invokevirtual java/io/PrintStream/println(I)V
20         return
21 .end method
22
23 .method public static check(Ljava/lang/String;)V
24         .limit locals 1
25         .limit stack 10
26         getstatic java/lang/System/out Ljava/io/PrintStream;
27         aload_0
28         invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
29         return
30 .end method
31
32 ; ======================================================================
33
34 .method public static main([Ljava/lang/String;)V
35         .limit stack 2
36         .limit locals 4
37
38         ldc 0
39         istore 1
40
41         aload 0
42         ifnull force_basic_block_boundary
43
44         ; --------------------------------------------------
45
46         jsr sbr_1
47
48         jsr sbr_1
49
50         ; --------------------------------------------------
51
52 force_basic_block_boundary:
53
54         iload 1
55         invokestatic test_verify_fail_jsr_multiple_returns/check(I)V
56
57         return
58
59 sbr_1:
60         astore 2
61         ldc "one"
62         invokestatic test_verify_fail_jsr_multiple_returns/check(Ljava/lang/String;)V
63         jsr sbr_2
64         ldc "one-B"
65         invokestatic test_verify_fail_jsr_multiple_returns/check(Ljava/lang/String;)V
66         iinc 1 1
67         ret 2
68
69 sbr_2:
70         astore 3
71         ldc "two"
72         invokestatic test_verify_fail_jsr_multiple_returns/check(Ljava/lang/String;)V
73         iload 1
74         ifne second_time
75         ret 3
76
77 second_time:
78         ret 2
79         ; ERROR: VerifyError
80
81 .end method
82