Mercurial > hg > graal-compiler
annotate src/share/vm/classfile/classFileParser.hpp @ 2607:008adfd6d850
Fixed the stateBefore of invokes and monitorenter instructions to include the arguments of the instruction.
This is necessary to ensure correct continuation in the interpreter when the stateBefore is used as a deoptimization point.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Fri, 06 May 2011 17:47:17 +0200 |
parents | 38fea01eb669 |
children | e6b1331a51d2 |
rev | line source |
---|---|
0 | 1 /* |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2177
diff
changeset
|
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. |
0 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
974
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
974
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
974
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_CLASSFILE_CLASSFILEPARSER_HPP |
26 #define SHARE_VM_CLASSFILE_CLASSFILEPARSER_HPP | |
27 | |
28 #include "classfile/classFileStream.hpp" | |
29 #include "memory/resourceArea.hpp" | |
30 #include "oops/oop.inline.hpp" | |
31 #include "oops/typeArrayOop.hpp" | |
32 #include "runtime/handles.inline.hpp" | |
33 #include "utilities/accessFlags.hpp" | |
34 | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
35 class TempNewSymbol; |
0 | 36 // Parser for for .class files |
37 // | |
38 // The bytes describing the class file structure is read from a Stream object | |
39 | |
40 class ClassFileParser VALUE_OBJ_CLASS_SPEC { | |
41 private: | |
42 bool _need_verify; | |
43 bool _relax_verify; | |
44 u2 _major_version; | |
45 u2 _minor_version; | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
46 Symbol* _class_name; |
710 | 47 KlassHandle _host_klass; |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
48 GrowableArray<Handle>* _cp_patches; // overrides for CP entries |
0 | 49 |
50 bool _has_finalizer; | |
51 bool _has_empty_finalizer; | |
52 bool _has_vanilla_constructor; | |
53 | |
2011
dad31fc330cd
7001379: bootstrap method data needs to be moved from constant pool to a classfile attribute
jrose
parents:
1972
diff
changeset
|
54 int _max_bootstrap_specifier_index; |
dad31fc330cd
7001379: bootstrap method data needs to be moved from constant pool to a classfile attribute
jrose
parents:
1972
diff
changeset
|
55 |
0 | 56 enum { fixed_buffer_size = 128 }; |
57 u_char linenumbertable_buffer[fixed_buffer_size]; | |
58 | |
59 ClassFileStream* _stream; // Actual input stream | |
60 | |
61 enum { LegalClass, LegalField, LegalMethod }; // used to verify unqualified names | |
62 | |
63 // Accessors | |
64 ClassFileStream* stream() { return _stream; } | |
65 void set_stream(ClassFileStream* st) { _stream = st; } | |
66 | |
67 // Constant pool parsing | |
68 void parse_constant_pool_entries(constantPoolHandle cp, int length, TRAPS); | |
69 | |
70 constantPoolHandle parse_constant_pool(TRAPS); | |
71 | |
72 // Interface parsing | |
73 objArrayHandle parse_interfaces(constantPoolHandle cp, | |
74 int length, | |
75 Handle class_loader, | |
76 Handle protection_domain, | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
77 Symbol* class_name, |
0 | 78 TRAPS); |
79 | |
80 // Field parsing | |
81 void parse_field_attributes(constantPoolHandle cp, u2 attributes_count, | |
82 bool is_static, u2 signature_index, | |
83 u2* constantvalue_index_addr, | |
84 bool* is_synthetic_addr, | |
85 u2* generic_signature_index_addr, | |
86 typeArrayHandle* field_annotations, TRAPS); | |
87 typeArrayHandle parse_fields(constantPoolHandle cp, bool is_interface, | |
88 struct FieldAllocationCount *fac, | |
89 objArrayHandle* fields_annotations, TRAPS); | |
90 | |
91 // Method parsing | |
92 methodHandle parse_method(constantPoolHandle cp, bool is_interface, | |
93 AccessFlags* promoted_flags, | |
94 typeArrayHandle* method_annotations, | |
95 typeArrayHandle* method_parameter_annotations, | |
96 typeArrayHandle* method_default_annotations, | |
97 TRAPS); | |
98 objArrayHandle parse_methods (constantPoolHandle cp, bool is_interface, | |
99 AccessFlags* promoted_flags, | |
100 bool* has_final_method, | |
101 objArrayOop* methods_annotations_oop, | |
102 objArrayOop* methods_parameter_annotations_oop, | |
103 objArrayOop* methods_default_annotations_oop, | |
104 TRAPS); | |
105 typeArrayHandle sort_methods (objArrayHandle methods, | |
106 objArrayHandle methods_annotations, | |
107 objArrayHandle methods_parameter_annotations, | |
108 objArrayHandle methods_default_annotations, | |
109 TRAPS); | |
110 typeArrayHandle parse_exception_table(u4 code_length, u4 exception_table_length, | |
111 constantPoolHandle cp, TRAPS); | |
112 void parse_linenumber_table( | |
113 u4 code_attribute_length, u4 code_length, | |
114 CompressedLineNumberWriteStream** write_stream, TRAPS); | |
115 u2* parse_localvariable_table(u4 code_length, u2 max_locals, u4 code_attribute_length, | |
116 constantPoolHandle cp, u2* localvariable_table_length, | |
117 bool isLVTT, TRAPS); | |
118 u2* parse_checked_exceptions(u2* checked_exceptions_length, u4 method_attribute_length, | |
119 constantPoolHandle cp, TRAPS); | |
120 void parse_type_array(u2 array_length, u4 code_length, u4* u1_index, u4* u2_index, | |
121 u1* u1_array, u2* u2_array, constantPoolHandle cp, TRAPS); | |
122 typeArrayOop parse_stackmap_table(u4 code_attribute_length, TRAPS); | |
123 | |
124 // Classfile attribute parsing | |
125 void parse_classfile_sourcefile_attribute(constantPoolHandle cp, instanceKlassHandle k, TRAPS); | |
126 void parse_classfile_source_debug_extension_attribute(constantPoolHandle cp, | |
127 instanceKlassHandle k, int length, TRAPS); | |
128 u2 parse_classfile_inner_classes_attribute(constantPoolHandle cp, | |
129 instanceKlassHandle k, TRAPS); | |
130 void parse_classfile_attributes(constantPoolHandle cp, instanceKlassHandle k, TRAPS); | |
131 void parse_classfile_synthetic_attribute(constantPoolHandle cp, instanceKlassHandle k, TRAPS); | |
132 void parse_classfile_signature_attribute(constantPoolHandle cp, instanceKlassHandle k, TRAPS); | |
2011
dad31fc330cd
7001379: bootstrap method data needs to be moved from constant pool to a classfile attribute
jrose
parents:
1972
diff
changeset
|
133 void parse_classfile_bootstrap_methods_attribute(constantPoolHandle cp, instanceKlassHandle k, u4 attribute_length, TRAPS); |
0 | 134 |
135 // Annotations handling | |
136 typeArrayHandle assemble_annotations(u1* runtime_visible_annotations, | |
137 int runtime_visible_annotations_length, | |
138 u1* runtime_invisible_annotations, | |
139 int runtime_invisible_annotations_length, TRAPS); | |
140 | |
141 // Final setup | |
939
9eebd3ac74cf
6845368: large objects cause a crash or unexpected exception
jcoomes
parents:
938
diff
changeset
|
142 unsigned int compute_oop_map_count(instanceKlassHandle super, |
9eebd3ac74cf
6845368: large objects cause a crash or unexpected exception
jcoomes
parents:
938
diff
changeset
|
143 unsigned int nonstatic_oop_count, |
9eebd3ac74cf
6845368: large objects cause a crash or unexpected exception
jcoomes
parents:
938
diff
changeset
|
144 int first_nonstatic_oop_offset); |
9eebd3ac74cf
6845368: large objects cause a crash or unexpected exception
jcoomes
parents:
938
diff
changeset
|
145 void fill_oop_maps(instanceKlassHandle k, |
9eebd3ac74cf
6845368: large objects cause a crash or unexpected exception
jcoomes
parents:
938
diff
changeset
|
146 unsigned int nonstatic_oop_map_count, |
9eebd3ac74cf
6845368: large objects cause a crash or unexpected exception
jcoomes
parents:
938
diff
changeset
|
147 int* nonstatic_oop_offsets, |
9eebd3ac74cf
6845368: large objects cause a crash or unexpected exception
jcoomes
parents:
938
diff
changeset
|
148 unsigned int* nonstatic_oop_counts); |
0 | 149 void set_precomputed_flags(instanceKlassHandle k); |
150 objArrayHandle compute_transitive_interfaces(instanceKlassHandle super, | |
151 objArrayHandle local_ifs, TRAPS); | |
152 | |
153 // Special handling for certain classes. | |
154 // Add the "discovered" field to java.lang.ref.Reference if | |
155 // it does not exist. | |
156 void java_lang_ref_Reference_fix_pre(typeArrayHandle* fields_ptr, | |
2376
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2357
diff
changeset
|
157 constantPoolHandle cp, |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2357
diff
changeset
|
158 FieldAllocationCount *fac_ptr, TRAPS); |
0 | 159 // Adjust the field allocation counts for java.lang.Class to add |
160 // fake fields. | |
2376
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2357
diff
changeset
|
161 void java_lang_Class_fix_pre(int* nonstatic_field_size, |
c7f3d0b4570f
7017732: move static fields into Class to prepare for perm gen removal
never
parents:
2357
diff
changeset
|
162 FieldAllocationCount *fac_ptr); |
0 | 163 // Adjust the next_nonstatic_oop_offset to place the fake fields |
164 // before any Java fields. | |
165 void java_lang_Class_fix_post(int* next_nonstatic_oop_offset); | |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2177
diff
changeset
|
166 // Adjust the field allocation counts for java.lang.invoke.MethodHandle to add |
710 | 167 // a fake address (void*) field. |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2177
diff
changeset
|
168 void java_lang_invoke_MethodHandle_fix_pre(constantPoolHandle cp, |
1909
d2e35ffae982
6994630: java/lang/instrument/IsModifiableClassAgent.java fails with -XX:+EnableInvokeDynamic
twisti
parents:
1589
diff
changeset
|
169 typeArrayHandle fields, |
710 | 170 FieldAllocationCount *fac_ptr, TRAPS); |
0 | 171 |
172 // Format checker methods | |
173 void classfile_parse_error(const char* msg, TRAPS); | |
174 void classfile_parse_error(const char* msg, int index, TRAPS); | |
175 void classfile_parse_error(const char* msg, const char *name, TRAPS); | |
176 void classfile_parse_error(const char* msg, int index, const char *name, TRAPS); | |
177 inline void guarantee_property(bool b, const char* msg, TRAPS) { | |
178 if (!b) { classfile_parse_error(msg, CHECK); } | |
179 } | |
180 | |
181 inline void assert_property(bool b, const char* msg, TRAPS) { | |
182 #ifdef ASSERT | |
183 if (!b) { fatal(msg); } | |
184 #endif | |
185 } | |
186 | |
187 inline void check_property(bool property, const char* msg, int index, TRAPS) { | |
188 if (_need_verify) { | |
189 guarantee_property(property, msg, index, CHECK); | |
190 } else { | |
191 assert_property(property, msg, CHECK); | |
192 } | |
193 } | |
194 | |
195 inline void check_property(bool property, const char* msg, TRAPS) { | |
196 if (_need_verify) { | |
197 guarantee_property(property, msg, CHECK); | |
198 } else { | |
199 assert_property(property, msg, CHECK); | |
200 } | |
201 } | |
202 | |
203 inline void guarantee_property(bool b, const char* msg, int index, TRAPS) { | |
204 if (!b) { classfile_parse_error(msg, index, CHECK); } | |
205 } | |
206 inline void guarantee_property(bool b, const char* msg, const char *name, TRAPS) { | |
207 if (!b) { classfile_parse_error(msg, name, CHECK); } | |
208 } | |
209 inline void guarantee_property(bool b, const char* msg, int index, const char *name, TRAPS) { | |
210 if (!b) { classfile_parse_error(msg, index, name, CHECK); } | |
211 } | |
212 | |
1586
086d73ccd6c0
6930553: classfile format checker allows invalid method descriptor in CONSTANT_NameAndType_info in some cases
kamg
parents:
974
diff
changeset
|
213 void throwIllegalSignature( |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
214 const char* type, Symbol* name, Symbol* sig, TRAPS); |
1586
086d73ccd6c0
6930553: classfile format checker allows invalid method descriptor in CONSTANT_NameAndType_info in some cases
kamg
parents:
974
diff
changeset
|
215 |
0 | 216 bool is_supported_version(u2 major, u2 minor); |
217 bool has_illegal_visibility(jint flags); | |
218 | |
219 void verify_constantvalue(int constantvalue_index, int signature_index, constantPoolHandle cp, TRAPS); | |
220 void verify_legal_utf8(const unsigned char* buffer, int length, TRAPS); | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
221 void verify_legal_class_name(Symbol* name, TRAPS); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
222 void verify_legal_field_name(Symbol* name, TRAPS); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
223 void verify_legal_method_name(Symbol* name, TRAPS); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
224 void verify_legal_field_signature(Symbol* fieldname, Symbol* signature, TRAPS); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
225 int verify_legal_method_signature(Symbol* methodname, Symbol* signature, TRAPS); |
0 | 226 void verify_legal_class_modifiers(jint flags, TRAPS); |
227 void verify_legal_field_modifiers(jint flags, bool is_interface, TRAPS); | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
228 void verify_legal_method_modifiers(jint flags, bool is_interface, Symbol* name, TRAPS); |
0 | 229 bool verify_unqualified_name(char* name, unsigned int length, int type); |
230 char* skip_over_field_name(char* name, bool slash_ok, unsigned int length); | |
231 char* skip_over_field_signature(char* signature, bool void_ok, unsigned int length, TRAPS); | |
232 | |
710 | 233 bool is_anonymous() { |
2416
38fea01eb669
6817525: turn on method handle functionality by default for JSR 292
twisti
parents:
2376
diff
changeset
|
234 assert(EnableInvokeDynamic || _host_klass.is_null(), ""); |
710 | 235 return _host_klass.not_null(); |
236 } | |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
237 bool has_cp_patch_at(int index) { |
2416
38fea01eb669
6817525: turn on method handle functionality by default for JSR 292
twisti
parents:
2376
diff
changeset
|
238 assert(EnableInvokeDynamic, ""); |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
239 assert(index >= 0, "oob"); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
240 return (_cp_patches != NULL |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
241 && index < _cp_patches->length() |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
242 && _cp_patches->adr_at(index)->not_null()); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
243 } |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
244 Handle cp_patch_at(int index) { |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
245 assert(has_cp_patch_at(index), "oob"); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
246 return _cp_patches->at(index); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
247 } |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
248 Handle clear_cp_patch_at(int index) { |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
249 Handle patch = cp_patch_at(index); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
250 _cp_patches->at_put(index, Handle()); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
251 assert(!has_cp_patch_at(index), ""); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
252 return patch; |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
253 } |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
254 void patch_constant_pool(constantPoolHandle cp, int index, Handle patch, TRAPS); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
255 |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
256 // Wrapper for constantTag.is_klass_[or_]reference. |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
257 // In older versions of the VM, klassOops cannot sneak into early phases of |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
258 // constant pool construction, but in later versions they can. |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
259 // %%% Let's phase out the old is_klass_reference. |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
260 bool is_klass_reference(constantPoolHandle cp, int index) { |
2416
38fea01eb669
6817525: turn on method handle functionality by default for JSR 292
twisti
parents:
2376
diff
changeset
|
261 return ((LinkWellKnownClasses || EnableInvokeDynamic) |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
262 ? cp->tag_at(index).is_klass_or_reference() |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
263 : cp->tag_at(index).is_klass_reference()); |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
264 } |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
265 |
0 | 266 public: |
267 // Constructor | |
268 ClassFileParser(ClassFileStream* st) { set_stream(st); } | |
269 | |
270 // Parse .class file and return new klassOop. The klassOop is not hooked up | |
271 // to the system dictionary or any other structures, so a .class file can | |
272 // be loaded several times if desired. | |
273 // The system dictionary hookup is done by the caller. | |
274 // | |
275 // "parsed_name" is updated by this method, and is the name found | |
276 // while parsing the stream. | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
277 instanceKlassHandle parseClassFile(Symbol* name, |
0 | 278 Handle class_loader, |
279 Handle protection_domain, | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
280 TempNewSymbol& parsed_name, |
973
ad6585fd4087
6830542: Performance: JVM_DefineClass already verified.
acorn
parents:
875
diff
changeset
|
281 bool verify, |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
282 TRAPS) { |
710 | 283 KlassHandle no_host_klass; |
973
ad6585fd4087
6830542: Performance: JVM_DefineClass already verified.
acorn
parents:
875
diff
changeset
|
284 return parseClassFile(name, class_loader, protection_domain, no_host_klass, NULL, parsed_name, verify, THREAD); |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
285 } |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
286 instanceKlassHandle parseClassFile(Symbol* name, |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
287 Handle class_loader, |
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
288 Handle protection_domain, |
710 | 289 KlassHandle host_klass, |
431
a45484ea312d
6653858: dynamic languages need to be able to load anonymous classes
jrose
parents:
0
diff
changeset
|
290 GrowableArray<Handle>* cp_patches, |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2011
diff
changeset
|
291 TempNewSymbol& parsed_name, |
973
ad6585fd4087
6830542: Performance: JVM_DefineClass already verified.
acorn
parents:
875
diff
changeset
|
292 bool verify, |
0 | 293 TRAPS); |
294 | |
295 // Verifier checks | |
296 static void check_super_class_access(instanceKlassHandle this_klass, TRAPS); | |
297 static void check_super_interface_access(instanceKlassHandle this_klass, TRAPS); | |
298 static void check_final_method_override(instanceKlassHandle this_klass, TRAPS); | |
299 static void check_illegal_static_method(instanceKlassHandle this_klass, TRAPS); | |
300 }; | |
1972 | 301 |
302 #endif // SHARE_VM_CLASSFILE_CLASSFILEPARSER_HPP |