221 FieldAllocationCount* const fac,
222 ConstantPool* cp,
223 const int cp_size,
224 u2* const java_fields_count_ptr,
225 TRAPS);
226
227 // Method parsing
228 Method* parse_method(const ClassFileStream* const cfs,
229 bool is_interface,
230 const ConstantPool* cp,
231 AccessFlags* const promoted_flags,
232 TRAPS);
233
234 void parse_methods(const ClassFileStream* const cfs,
235 bool is_interface,
236 AccessFlags* const promoted_flags,
237 bool* const has_final_method,
238 bool* const declares_nonstatic_concrete_methods,
239 TRAPS);
240
241 const u2* parse_exception_table(const ClassFileStream* const stream,
242 u4 code_length,
243 u4 exception_table_length,
244 TRAPS);
245
246 void parse_linenumber_table(u4 code_attribute_length,
247 u4 code_length,
248 CompressedLineNumberWriteStream**const write_stream,
249 TRAPS);
250
251 const u2* parse_localvariable_table(const ClassFileStream* const cfs,
252 u4 code_length,
253 u2 max_locals,
254 u4 code_attribute_length,
255 u2* const localvariable_table_length,
256 bool isLVTT,
257 TRAPS);
258
259 const u2* parse_checked_exceptions(const ClassFileStream* const cfs,
260 u2* const checked_exceptions_length,
261 u4 method_attribute_length,
262 TRAPS);
263
264 void parse_type_array(u2 array_length,
265 u4 code_length,
266 u4* const u1_index,
267 u4* const u2_index,
268 u1* const u1_array,
269 u2* const u2_array,
270 TRAPS);
271
272 // Classfile attribute parsing
273 u2 parse_generic_signature_attribute(const ClassFileStream* const cfs, TRAPS);
274 void parse_classfile_sourcefile_attribute(const ClassFileStream* const cfs, TRAPS);
275 void parse_classfile_source_debug_extension_attribute(const ClassFileStream* const cfs,
276 int length,
277 TRAPS);
278
279 u2 parse_classfile_inner_classes_attribute(const ClassFileStream* const cfs,
436 TRAPS);
437
438 // Wrapper for constantTag.is_klass_[or_]reference.
439 // In older versions of the VM, Klass*s cannot sneak into early phases of
440 // constant pool construction, but in later versions they can.
441 // %%% Let's phase out the old is_klass_reference.
442 bool valid_klass_reference_at(int index) const {
443 return _cp->is_within_bounds(index) &&
444 _cp->tag_at(index).is_klass_or_reference();
445 }
446
447 // Checks that the cpool index is in range and is a utf8
448 bool valid_symbol_at(int cpool_index) const {
449 return _cp->is_within_bounds(cpool_index) &&
450 _cp->tag_at(cpool_index).is_utf8();
451 }
452
453 void copy_localvariable_table(const ConstMethod* cm,
454 int lvt_cnt,
455 u2* const localvariable_table_length,
456 const u2**const localvariable_table_start,
457 int lvtt_cnt,
458 u2* const localvariable_type_table_length,
459 const u2** const localvariable_type_table_start,
460 TRAPS);
461
462 void copy_method_annotations(ConstMethod* cm,
463 const u1* runtime_visible_annotations,
464 int runtime_visible_annotations_length,
465 const u1* runtime_invisible_annotations,
466 int runtime_invisible_annotations_length,
467 const u1* runtime_visible_parameter_annotations,
468 int runtime_visible_parameter_annotations_length,
469 const u1* runtime_invisible_parameter_annotations,
470 int runtime_invisible_parameter_annotations_length,
471 const u1* runtime_visible_type_annotations,
472 int runtime_visible_type_annotations_length,
473 const u1* runtime_invisible_type_annotations,
474 int runtime_invisible_type_annotations_length,
475 const u1* annotation_default,
476 int annotation_default_length,
477 TRAPS);
478
479 // lays out fields in class and returns the total oopmap count
|
221 FieldAllocationCount* const fac,
222 ConstantPool* cp,
223 const int cp_size,
224 u2* const java_fields_count_ptr,
225 TRAPS);
226
227 // Method parsing
228 Method* parse_method(const ClassFileStream* const cfs,
229 bool is_interface,
230 const ConstantPool* cp,
231 AccessFlags* const promoted_flags,
232 TRAPS);
233
234 void parse_methods(const ClassFileStream* const cfs,
235 bool is_interface,
236 AccessFlags* const promoted_flags,
237 bool* const has_final_method,
238 bool* const declares_nonstatic_concrete_methods,
239 TRAPS);
240
241 const void* parse_exception_table(const ClassFileStream* const stream,
242 u4 code_length,
243 u4 exception_table_length,
244 TRAPS);
245
246 void parse_linenumber_table(u4 code_attribute_length,
247 u4 code_length,
248 CompressedLineNumberWriteStream**const write_stream,
249 TRAPS);
250
251 const void* parse_localvariable_table(const ClassFileStream* const cfs,
252 u4 code_length,
253 u2 max_locals,
254 u4 code_attribute_length,
255 u2* const localvariable_table_length,
256 bool isLVTT,
257 TRAPS);
258
259 const void* parse_checked_exceptions(const ClassFileStream* const cfs,
260 u2* const checked_exceptions_length,
261 u4 method_attribute_length,
262 TRAPS);
263
264 void parse_type_array(u2 array_length,
265 u4 code_length,
266 u4* const u1_index,
267 u4* const u2_index,
268 u1* const u1_array,
269 u2* const u2_array,
270 TRAPS);
271
272 // Classfile attribute parsing
273 u2 parse_generic_signature_attribute(const ClassFileStream* const cfs, TRAPS);
274 void parse_classfile_sourcefile_attribute(const ClassFileStream* const cfs, TRAPS);
275 void parse_classfile_source_debug_extension_attribute(const ClassFileStream* const cfs,
276 int length,
277 TRAPS);
278
279 u2 parse_classfile_inner_classes_attribute(const ClassFileStream* const cfs,
436 TRAPS);
437
438 // Wrapper for constantTag.is_klass_[or_]reference.
439 // In older versions of the VM, Klass*s cannot sneak into early phases of
440 // constant pool construction, but in later versions they can.
441 // %%% Let's phase out the old is_klass_reference.
442 bool valid_klass_reference_at(int index) const {
443 return _cp->is_within_bounds(index) &&
444 _cp->tag_at(index).is_klass_or_reference();
445 }
446
447 // Checks that the cpool index is in range and is a utf8
448 bool valid_symbol_at(int cpool_index) const {
449 return _cp->is_within_bounds(cpool_index) &&
450 _cp->tag_at(cpool_index).is_utf8();
451 }
452
453 void copy_localvariable_table(const ConstMethod* cm,
454 int lvt_cnt,
455 u2* const localvariable_table_length,
456 const void** const localvariable_table_start,
457 int lvtt_cnt,
458 u2* const localvariable_type_table_length,
459 const void** const localvariable_type_table_start,
460 TRAPS);
461
462 void copy_method_annotations(ConstMethod* cm,
463 const u1* runtime_visible_annotations,
464 int runtime_visible_annotations_length,
465 const u1* runtime_invisible_annotations,
466 int runtime_invisible_annotations_length,
467 const u1* runtime_visible_parameter_annotations,
468 int runtime_visible_parameter_annotations_length,
469 const u1* runtime_invisible_parameter_annotations,
470 int runtime_invisible_parameter_annotations_length,
471 const u1* runtime_visible_type_annotations,
472 int runtime_visible_type_annotations_length,
473 const u1* runtime_invisible_type_annotations,
474 int runtime_invisible_type_annotations_length,
475 const u1* annotation_default,
476 int annotation_default_length,
477 TRAPS);
478
479 // lays out fields in class and returns the total oopmap count
|