annotate test/runtime/7116786/Test7116786.java @ 9790:6b515c453646

CompilationTask: print exception of compilation also when we don't exit the VM for example, this is useful for CTW, in order to see on which methods the compiler bails out
author Bernhard Urban <bernhard.urban@jku.at>
date Wed, 22 May 2013 16:28:12 +0200
parents aa758f0c5b1c
children c77d5db18942
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6605
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
1 /*
8838
aa758f0c5b1c 8010833: Test7116786.java is failing on most configs after fix for 8010667
hseigel
parents: 6605
diff changeset
2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
6605
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
4 *
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
7 * published by the Free Software Foundation.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
8 *
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
13 * accompanied this code).
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
14 *
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
18 *
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
21 * questions.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
22 *
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
23 */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
24
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
25 /*
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
26 * @test Test7116786
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
27 * @summary verify that VerifyError messages are as expected
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
28 * @library testcases.jar
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
29 * @run main/othervm -Xverify:all Test7116786
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
30 */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
31
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
32
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
33 /**
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
34 * This class contains information regarding when a VerifyError is thrown
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
35 * in the verifier. Most of the data is informational-only, and can be
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
36 * used to track down where and why VerifyErrors are thrown. As such it
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
37 * is possible the information may go out-of-date.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
38 *
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
39 * The only fields used for the purpose of testing is the 'caseName' and
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
40 * the 'message'. The 'caseName' corresponds to a classfile which exhibits
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
41 * the VerifyError, and the 'message' is a regular expression which we expect
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
42 * to match the verify error message. If the 'message' doesn't match what
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
43 * we expect, it warrents investigation to see if we are still triggering
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
44 * the VerifyError that we expect. It could simply just be that the message
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
45 * changed, which is fine.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
46 *
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
47 * Some cases are not testable, either because the code is probably unreachable
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
48 * or the test classfile would be too onerous to create. These cases are
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
49 * marked with 'testable' == false, and the test runner will skip them.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
50 */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
51 class Case {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
52 private String caseName; // Name of the case
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
53 private String file; // Source file where VerifyError is thrown
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
54 private String location; // enclosing function or switch case
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
55 private String description; // What causes this VerifyError
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
56 private String message; // The VerifyError message used.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
57
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
58 private boolean testable; // Whether this case is testable or not.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
59
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
60 public Case(String caseName, String file, boolean testable,
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
61 String location, String description, String message) {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
62 this.caseName = caseName;
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
63 this.file = file;
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
64 this.testable = testable;
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
65 this.location = location;
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
66 this.description = description;
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
67 this.message = message;
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
68 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
69
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
70 String getCaseName() { return this.caseName; }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
71 String getFile() { return this.file; }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
72 String getLocation() { return this.location; }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
73 String getDescription() { return this.description; }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
74 String getMessage() { return this.message; }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
75
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
76 boolean isTestable() { return this.testable; }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
77 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
78
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
79 /**
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
80 * These are the locations in the source code where VerifyErrors are thrown
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
81 * as of today, 2012/07/18. These may change as the verification code is
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
82 * modified, which is ok. This test is trying to provide coverage for all
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
83 * VerifyErrors (just to make sure there are no crashes) and it's probably
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
84 * not necessary to update it every time the VM changes.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
85 */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
86 class VerifyErrorCases {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
87 public static final Case[] cases = {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
88
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
89 new Case("case00", "stackMapFrame.cpp", true, "pop_stack_ex",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
90 "stack underflow",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
91 "Operand stack underflow"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
92
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
93 new Case("case01", "stackMapFrame.cpp", true, "pop_stack_ex",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
94 "stack pop not assignable to expected",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
95 "Bad type on operand stack"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
96
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
97 new Case("case02", "stackMapFrame.cpp", true, "get_local",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
98 "local index out-of-bounds",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
99 "Local variable table overflow"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
100
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
101 new Case("case03", "stackMapFrame.cpp", true, "get_local",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
102 "local not assignable to expected",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
103 "Bad local variable type"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
104
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
105 new Case("case04", "stackMapFrame.cpp", true, "get_local_2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
106 "local index out-of-bounds [type2]",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
107 "get long/double overflows locals"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
108
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
109 new Case("case05", "stackMapFrame.cpp", true, "get_local_2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
110 "local not assignabled to expected [type2]",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
111 "Bad local variable type"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
112
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
113 /* Unreachable: Can't split long/double on stack */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
114 new Case("case06", "stackMapFrame.cpp", false, "get_local_2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
115 "local second-word not assignabled to expected",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
116 "Bad local variable type"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
117
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
118 new Case("case07", "stackMapFrame.cpp", true, "set_local",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
119 "local index out-of-bounds",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
120 "Local variable table overflow"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
121
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
122 new Case("case08", "stackMapFrame.cpp", true, "set_local_2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
123 "local index out-of-bounds [type2]",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
124 "Local variable table overflow"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
125
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
126 new Case("case09", "stackMapFrame.hpp", true, "push_stack",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
127 "stack overflow",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
128 "Operand stack overflow"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
129
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
130 new Case("case10", "stackMapFrame.hpp", true, "push_stack_2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
131 "stack overflow [type2]",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
132 "Operand stack overflow"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
133
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
134 new Case("case11", "stackMapFrame.hpp", true, "pop_stack",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
135 "stack underflow",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
136 "Operand stack underflow"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
137
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
138 new Case("case12", "stackMapTable.cpp", true, "StackMapTable ctor",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
139 "stackmap offset beyond code size",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
140 "StackMapTable error: bad offset"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
141
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
142 new Case("case13", "stackMapTable.cpp", true, "match_stackmap",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
143 "no stackmap frame at expected location",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
144 "Expecting a stackmap frame at branch target "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
145
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
146 new Case("case14", "stackMapTable.cpp", true, "check_jump_target",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
147 "no stackmap frame at jump location or bad jump",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
148 "Inconsistent stackmap frames at branch target "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
149
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
150 new Case("case15", "stackMapTable.cpp", true, "check_new_object",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
151 "backward jump with uninit",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
152 "Uninitialized object exists on backward branch "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
153
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
154 /* Unreachable: wide instructions verified during bytecode analysis */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
155 new Case("case16", "verifier.cpp", false, "loop header",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
156 "bad op in wide instruction",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
157 "Bad wide instruction"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
158
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
159 new Case("case17", "verifier.cpp", true, "case iaload",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
160 "TOS not X array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
161 "Bad type on operand stack in iaload"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
162
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
163 new Case("case18", "verifier.cpp", true, "case baload",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
164 "TOS not X array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
165 "Bad type on operand stack in baload"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
166
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
167 new Case("case19", "verifier.cpp", true, "case caload",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
168 "TOS not X array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
169 "Bad type on operand stack in caload"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
170
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
171 new Case("case20", "verifier.cpp", true, "case saload",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
172 "TOS not X array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
173 "Bad type on operand stack in saload"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
174
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
175 new Case("case21", "verifier.cpp", true, "case laload",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
176 "TOS not X array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
177 "Bad type on operand stack in laload"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
178
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
179 new Case("case22", "verifier.cpp", true, "case faload",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
180 "TOS not X array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
181 "Bad type on operand stack in faload"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
182
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
183 new Case("case23", "verifier.cpp", true, "case daload",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
184 "TOS not X array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
185 "Bad type on operand stack in daload"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
186
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
187 new Case("case24", "verifier.cpp", true, "case aaload",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
188 "TOS not X array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
189 "Bad type on operand stack in aaload"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
190
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
191 new Case("case25", "verifier.cpp", true, "case iastore",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
192 "TOS not int array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
193 "Bad type on operand stack in iastore"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
194
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
195 new Case("case26", "verifier.cpp", true, "case bastore",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
196 "TOS not byte array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
197 "Bad type on operand stack in bastore"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
198
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
199 new Case("case27", "verifier.cpp", true, "case castore",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
200 "TOS not char array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
201 "Bad type on operand stack in castore"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
202
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
203 new Case("case28", "verifier.cpp", true, "case sastore",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
204 "TOS not short array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
205 "Bad type on operand stack in sastore"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
206
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
207 new Case("case29", "verifier.cpp", true, "case lastore",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
208 "TOS not long array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
209 "Bad type on operand stack in lastore"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
210
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
211 new Case("case30", "verifier.cpp", true, "case fastore",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
212 "TOS not float array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
213 "Bad type on operand stack in fastore"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
214
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
215 new Case("case31", "verifier.cpp", true, "case dastore",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
216 "TOS not double array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
217 "Bad type on operand stack in dastore"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
218
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
219 new Case("case32", "verifier.cpp", true, "case aastore",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
220 "TOS not object array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
221 "Bad type on operand stack in aastore"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
222
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
223 /* Unreachable: In order to hit this case, we would need a
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
224 * category2_1st at TOS which is not possible. */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
225 new Case("case33", "verifier.cpp", false, "case pop2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
226 "TOS is category2_1st (would split)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
227 "Bad type on operand stack in pop2"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
228
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
229 /* Unreachable: In order to hit this case, we would need a
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
230 * category2_1st at stack depth 2 with category_1 on TOS which is not
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
231 * possible. */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
232 new Case("case34", "verifier.cpp", false, "case dup_x2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
233 "TOS-1 is category2_1st (would split)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
234 "Bad type on operand stack in dup_x2"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
235
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
236 /* Unreachable: In order to hit this case, we would need a
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
237 * category2_1st at TOS which is not possible. */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
238 new Case("case35", "verifier.cpp", false, "case dup2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
239 "TOS-1 is category2_1st (would split)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
240 "Bad type on operand stack in dup2"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
241
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
242 /* Unreachable: In order to hit this case, we would need a
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
243 * category2_1st at TOS which is not possible. */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
244 new Case("case36", "verifier.cpp", false, "case dup2_x1",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
245 "TOS-1 is category2_1st (would split)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
246 "Bad type on operand stack in dup2_x1"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
247
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
248 /* Unreachable: In order to hit this case, we would need a
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
249 * category2_1st at TOS which is not possible. */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
250 new Case("case37", "verifier.cpp", false, "case dup2_x2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
251 "TOS-1 is category2_1st (would split)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
252 "Bad type on operand stack in dup2_x2"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
253
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
254 /* Unreachable: In order to hit this case, we would need a
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
255 * category2_1st at stack depth 3 with either 2 category_1 or 1
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
256 * category_2 on TOS, which is not possible. */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
257 new Case("case38", "verifier.cpp", false, "case dup2_x2",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
258 "TOS-3 is category2_1st (would split)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
259 "Bad type on operand stack in dup2_x2"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
260
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
261 new Case("case39", "verifier.cpp", true, "case return",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
262 "return type of method is not void",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
263 "Method expects a return value"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
264
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
265 new Case("case40", "verifier.cpp", true, "case return",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
266 "return with uninitialized this ",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
267 "Constructor must call super() or this() before return"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
268
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
269 new Case("case41", "verifier.cpp", true, "case new",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
270 "cp index not a class type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
271 "Illegal new instruction"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
272
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
273 new Case("case42", "verifier.cpp", true, "case arraylength",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
274 "TOS is not an array",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
275 "Bad type on operand stack in arraylength"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
276
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
277 new Case("case43", "verifier.cpp", true, "case multianewarray",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
278 "CP index does not refer to array type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
279 "Illegal constant pool index in multianewarray instruction"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
280
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
281 new Case("case44", "verifier.cpp", true, "case multianewarray",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
282 "Bad dimension (<1) or does not match CP signature",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
283 "Illegal dimension in multianewarray instruction: "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
284
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
285 new Case("case45", "verifier.cpp", true, "case default",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
286 "Unrecognized bytecode",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
287 "Bad instruction: "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
288
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
289 new Case("case46", "verifier.cpp", true, "loop end",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
290 "control flow falls off method",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
291 "Control flow falls through code end"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
292
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
293 new Case("case47", "verifier.cpp", true, "generate_code_data",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
294 "illegal bytecode via RawBytecodeStream (breakpoint)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
295 "Bad instruction"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
296
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
297 new Case("case48", "verifier.cpp", true, "generate_code_data",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
298 "illegal bytecode via RawBytecodeStream (other illegal)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
299 "Bad instruction"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
300
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
301 new Case("case49", "verifier.cpp", true,
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
302 "verify_exception_handler_table",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
303 "catch_type is not throwable",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
304 "Catch type is not a subclass of Throwable in " +
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
305 "exception handler "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
306
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
307 new Case("case50", "verifier.cpp", true, "verify_stackmap_table",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
308 "missing a stack map frame @ target location (mid table)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
309 "Expecting a stack map frame"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
310
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
311 new Case("case51", "verifier.cpp", true, "verify_stackmap_table",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
312 "stack map does not match?",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
313 "Instruction type does not match stack map"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
314
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
315 new Case("case52", "verifier.cpp", true, "verify_stackmap_table",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
316 "missing a stack map frame @ target location (end of table)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
317 "Expecting a stack map frame"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
318
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
319 new Case("case53", "verifier.cpp", true,
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
320 "verify_exception_handler_targets",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
321 "stackmap mismatch at exception handler",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
322 "Stack map does not match the one at exception handler "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
323
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
324 new Case("case54", "verifier.cpp", true, "verify_cp_index",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
325 "constant pool index is out-of-bounds",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
326 "Illegal constant pool index "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
327
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
328 new Case("case55", "verifier.cpp", true, "verify_cp_type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
329 "constant pool entry is not expected type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
330 "Illegal type at constant pool entry "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
331
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
332 new Case("case56", "verifier.cpp", true, "verify_cp_class_type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
333 "constant pool entry is not an object type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
334 "Illegal type at constant pool entry "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
335
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
336 /* Unreachable: verify_cp_type gates this case */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
337 new Case("case57", "verifier.cpp", false, "verify_ldc",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
338 "invalid constant pool index in ldc",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
339 "Invalid index in ldc"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
340
8838
aa758f0c5b1c 8010833: Test7116786.java is failing on most configs after fix for 8010667
hseigel
parents: 6605
diff changeset
341 /* No longer a valid test case for bytecode version >= 51. Nonzero
aa758f0c5b1c 8010833: Test7116786.java is failing on most configs after fix for 8010667
hseigel
parents: 6605
diff changeset
342 * padding bytes are permitted with lookupswitch and tableswitch
aa758f0c5b1c 8010833: Test7116786.java is failing on most configs after fix for 8010667
hseigel
parents: 6605
diff changeset
343 * bytecodes as of JVMS 3d edition */
aa758f0c5b1c 8010833: Test7116786.java is failing on most configs after fix for 8010667
hseigel
parents: 6605
diff changeset
344 new Case("case58", "verifier.cpp", false, "verify_switch",
6605
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
345 "bad switch padding",
8838
aa758f0c5b1c 8010833: Test7116786.java is failing on most configs after fix for 8010667
hseigel
parents: 6605
diff changeset
346 "Nonzero padding byte in lookupswitch or tableswitch"),
6605
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
347
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
348 new Case("case59", "verifier.cpp", true, "verify_switch",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
349 "tableswitch low is greater than high",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
350 "low must be less than or equal to high in tableswitch"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
351
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
352 /* Unreachable on 64-bit? Only way to get here is to overflow
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
353 * the 'keys' variable which can't happen on 64-bit since we're dealing
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
354 * with 32-bit values. Perhaps reachable on 32-bit but the
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
355 * triggering class would be quite large */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
356 new Case("case60", "verifier.cpp", false, "verify_switch",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
357 "high - low + 1 < 0 (overflow?)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
358 "too many keys in tableswitch"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
359
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
360 /* Would have to create a 16G classfile to trip this. Possible but
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
361 * not reasonable to do in a test. */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
362 new Case("case61", "verifier.cpp", false, "verify_switch",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
363 "lookupswitch keys < 0",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
364 "number of keys in lookupswitch less than 0"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
365
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
366 new Case("case62", "verifier.cpp", true, "verify_switch",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
367 "lookupswitch keys out-of-order",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
368 "Bad lookupswitch instruction"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
369
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
370 /* Unreachable: Class file parser verifies Fieldref contents */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
371 new Case("case63", "verifier.cpp", false, "verify_field_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
372 "referenced class is not an CP object",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
373 "Expecting reference to class in class "),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
374
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
375 new Case("case64", "verifier.cpp", true, "verify_field_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
376 "TOS not assignable to field type in putfield",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
377 "Bad type on operand stack in putfield"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
378
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
379 new Case("case65", "verifier.cpp", true, "verify_field_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
380 "TOS not assignable to class when accessing protected field",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
381 "Bad access to protected data in getfield"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
382
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
383 new Case("case66", "verifier.cpp", true, "verify_invoke_init",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
384 "Uninit_this is not of the current type or it's supertype",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
385 "Bad <init> method call"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
386
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
387 /* Unreachable: Stack map parsing ensures valid type and new
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
388 * instructions have a valid BCI. */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
389 new Case("case67", "verifier.cpp", false, "verify_invoke_init",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
390 "Uninit type with bad new instruction index",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
391 "Expecting new instruction"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
392
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
393 new Case("case68", "verifier.cpp", true, "verify_invoke_init",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
394 "calling other class's <init> method",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
395 "Call to wrong <init> method"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
396
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
397 new Case("case69", "verifier.cpp", true, "verify_invoke_init",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
398 "Calling protected <init> and type unassignable from current",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
399 "Bad access to protected <init> method"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
400
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
401 new Case("case70", "verifier.cpp", true, "verify_invoke_init",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
402 "TOS is not an uninitialized (or Uninit_this) type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
403 "Bad operand type when invoking <init>"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
404
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
405 new Case("case71", "verifier.cpp", true, "verify_invoke_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
406 "Arg count in instruction doesn't match signature",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
407 "Inconsistent args count operand in invokeinterface"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
408
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
409 new Case("case72", "verifier.cpp", true, "verify_invoke_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
410 "Non-zero pad in invokeinterface",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
411 "Fourth operand byte of invokeinterface must be zero"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
412
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
413 new Case("case73", "verifier.cpp", true, "verify_invoke_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
414 "Non-zero pad in invokedynamic",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
415 "Third and fourth operand bytes of " +
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
416 "invokedynamic must be zero"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
417
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
418 new Case("case74", "verifier.cpp", true, "verify_invoke_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
419 "Non-invokespecial trying to invoke a '<' method",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
420 "Illegal call to internal method"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
421
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
422 new Case("case75", "verifier.cpp", true, "verify_invoke_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
423 "invokespecial and current unassignable from referenced type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
424 "Bad invokespecial instruction: current class isn't " +
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
425 "assignable to reference class."),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
426
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
427 new Case("case76", "verifier.cpp", true, "verify_invoke_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
428 "TOS not assignable to current when calling protected method",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
429 "Bad access to protected data in invokevirtual"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
430
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
431 /* Unreachable: class file parser enforces void signature */
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
432 new Case("case77", "verifier.cpp", false, "verify_invoke_instructions",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
433 "<init> method is not void return",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
434 "Return type must be void in <init> method"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
435
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
436 new Case("case78", "verifier.cpp", true, "get_newarray_type",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
437 "newarray type invalid",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
438 "Illegal newarray instruction"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
439
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
440 new Case("case79", "verifier.cpp", true, "verify_return_value",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
441 "void return from method which has a return value",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
442 "Method expects a return value"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
443
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
444 new Case("case80", "verifier.cpp", true, "verify_return_value",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
445 "TOS type does not match signature",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
446 "Bad return type"),
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
447
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
448 new Case("case81", "verifier.cpp", true, "verify_stackmap_table",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
449 "stack map does not match (flags)",
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
450 "Instruction type does not match stack map")
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
451 };
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
452 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
453
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
454 public class Test7116786 {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
455 public static void main(String argv[]) throws Exception {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
456 for (Case c : VerifyErrorCases.cases) {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
457 System.out.println("******** " + c.getCaseName() + " ********");
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
458 if (c.isTestable()) {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
459 try {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
460 ClassLoader cl = Test7116786.class.getClassLoader();
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
461 Class<?> cls = Class.forName(c.getCaseName(), true, cl);
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
462 throw new RuntimeException(
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
463 "++ FAIL: No verify error encountered");
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
464 } catch (VerifyError ve) {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
465 String message = c.getMessage();
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
466 String veMessage = ve.getMessage();
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
467 System.out.print(veMessage);
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
468 if (!veMessage.startsWith(message)) {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
469 // We're not seeing the message we expect. Could be
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
470 // that we've gotten the wrong VerifyError case, or
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
471 // maybe the message changed.
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
472 System.out.println("++ FAIL? " +
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
473 "Message does not match what was expected: " +
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
474 message);
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
475 continue;
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
476 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
477 if (!veMessage.contains("Exception Details:") &&
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
478 !veMessage.contains("Reason:")) {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
479 System.out.println("++ FAIL: No details found");
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
480 throw new RuntimeException("FAIL: No details found");
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
481 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
482 System.out.println("++ PASS");
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
483 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
484 } else {
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
485 System.out.println("++ SKIPPED");
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
486 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
487 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
488 }
4ee06e614636 7116786: RFE: Detailed information on VerifyErrors
kamg
parents:
diff changeset
489 }