src/share/vm/classfile/classFileParser.hpp

Print this page
rev 145 : 6711908: JVM needs direct access to some annotations
Summary: Provide hook to scan annotations in the class file parser, before the instanceKlass is created.
Reviewed-by: ?

*** 36,45 **** --- 36,55 ---- bool _has_finalizer; bool _has_empty_finalizer; bool _has_vanilla_constructor; + // class attributes parsed before the instance klass is created: + u2 _em_class_index, _em_method_index; //for enclosing method + bool _synthetic_flag; + symbolHandle _retention_policy; + symbolHandle _sourcefile; + symbolHandle _generic_signature; + symbolHandle _sde_symbol; + typeArrayHandle _inner_classes; + typeArrayHandle _annotations; + enum { fixed_buffer_size = 128 }; u_char linenumbertable_buffer[fixed_buffer_size]; ClassFileStream* _stream; // Actual input stream
*** 106,129 **** void parse_type_array(u2 array_length, u4 code_length, u4* u1_index, u4* u2_index, u1* u1_array, u2* u2_array, constantPoolHandle cp, TRAPS); typeArrayOop parse_stackmap_table(u4 code_attribute_length, TRAPS); // Classfile attribute parsing ! void parse_classfile_sourcefile_attribute(constantPoolHandle cp, instanceKlassHandle k, TRAPS); ! void parse_classfile_source_debug_extension_attribute(constantPoolHandle cp, ! instanceKlassHandle k, int length, TRAPS); ! u2 parse_classfile_inner_classes_attribute(constantPoolHandle cp, ! instanceKlassHandle k, TRAPS); ! void parse_classfile_attributes(constantPoolHandle cp, instanceKlassHandle k, TRAPS); ! void parse_classfile_synthetic_attribute(constantPoolHandle cp, instanceKlassHandle k, TRAPS); ! void parse_classfile_signature_attribute(constantPoolHandle cp, instanceKlassHandle k, TRAPS); // Annotations handling typeArrayHandle assemble_annotations(u1* runtime_visible_annotations, int runtime_visible_annotations_length, u1* runtime_invisible_annotations, int runtime_invisible_annotations_length, TRAPS); // Final setup int compute_oop_map_size(instanceKlassHandle super, int nonstatic_oop_count, int first_nonstatic_oop_offset); void fill_oop_maps(instanceKlassHandle k, int nonstatic_oop_map_count, --- 116,145 ---- void parse_type_array(u2 array_length, u4 code_length, u4* u1_index, u4* u2_index, u1* u1_array, u2* u2_array, constantPoolHandle cp, TRAPS); typeArrayOop parse_stackmap_table(u4 code_attribute_length, TRAPS); // Classfile attribute parsing ! void parse_classfile_sourcefile_attribute(constantPoolHandle cp, symbolHandle* sourcefile, TRAPS); ! void parse_classfile_source_debug_extension_attribute(constantPoolHandle cp, int length, ! symbolHandle* sde_symbol_ret, ! TRAPS); ! u2 parse_classfile_inner_classes_attribute(constantPoolHandle cp, typeArrayHandle* inner_classes, TRAPS); ! void parse_classfile_attributes(constantPoolHandle cp, TRAPS); ! void parse_classfile_synthetic_attribute(constantPoolHandle cp, bool* synthetic_flag, TRAPS); ! void parse_classfile_signature_attribute(constantPoolHandle cp, symbolHandle* signature, TRAPS); // Annotations handling typeArrayHandle assemble_annotations(u1* runtime_visible_annotations, int runtime_visible_annotations_length, u1* runtime_invisible_annotations, int runtime_invisible_annotations_length, TRAPS); + int skip_annotation(u1* buffer, int limit, int index); + int skip_annotation_value(u1* buffer, int limit, int index); + void parse_class_annotations(u1* buffer, int limit, constantPoolHandle cp, + /* Results: */ + symbolHandle* retention_policy, + TRAPS); // Final setup int compute_oop_map_size(instanceKlassHandle super, int nonstatic_oop_count, int first_nonstatic_oop_offset); void fill_oop_maps(instanceKlassHandle k, int nonstatic_oop_map_count,