< prev index next >

src/hotspot/share/classfile/classFileParser.hpp

Print this page

 55  public:
 56   OopMapBlock* _nonstatic_oop_maps;
 57   unsigned int _nonstatic_oop_map_count;
 58   unsigned int _max_nonstatic_oop_maps;
 59 
 60   OopMapBlocksBuilder(unsigned int  max_blocks);
 61   OopMapBlock* last_oop_map() const;
 62   void initialize_inherited_blocks(OopMapBlock* blocks, unsigned int nof_blocks);
 63   void add(int offset, int count);
 64   void copy(OopMapBlock* dst);
 65   void compact();
 66   void print_on(outputStream* st) const;
 67   void print_value_on(outputStream* st) const;
 68 };
 69 
 70 // Values needed for oopmap and InstanceKlass creation
 71 class FieldLayoutInfo : public ResourceObj {
 72  public:
 73   OopMapBlocksBuilder* oop_map_blocks;
 74   int _instance_size;

 75   int _nonstatic_field_size;
 76   int _static_field_size;
 77   bool  _has_nonstatic_fields;
 78 };
 79 
 80 // Parser for for .class files
 81 //
 82 // The bytes describing the class file structure is read from a Stream object
 83 
 84 class ClassFileParser {
 85   friend class FieldLayoutBuilder;
 86   friend class FieldLayout;
 87 
 88   class ClassAnnotationCollector;
 89   class FieldAnnotationCollector;
 90 
 91  public:
 92   // The ClassFileParser has an associated "publicity" level
 93   // It is used to control which subsystems (if any)
 94   // will observe the parsing (logging, events, tracing).

490 
491  public:
492   ClassFileParser(ClassFileStream* stream,
493                   Symbol* name,
494                   ClassLoaderData* loader_data,
495                   const ClassLoadInfo* cl_info,
496                   Publicity pub_level,
497                   TRAPS);
498 
499   ~ClassFileParser();
500 
501   InstanceKlass* create_instance_klass(bool cf_changed_in_CFLH, const ClassInstanceInfo& cl_inst_info, TRAPS);
502 
503   const ClassFileStream* clone_stream() const;
504 
505   void set_klass_to_deallocate(InstanceKlass* klass);
506 
507   int static_field_size() const;
508   int total_oop_map_count() const;
509   jint layout_size() const;

510 
511   int vtable_size() const { return _vtable_size; }
512   int itable_size() const { return _itable_size; }
513 
514   u2 this_class_index() const { return _this_class_index; }
515 
516   bool is_hidden() const { return _is_hidden; }
517   bool is_interface() const { return _access_flags.is_interface(); }
518 
519   ClassLoaderData* loader_data() const { return _loader_data; }
520   const Symbol* class_name() const { return _class_name; }
521   const InstanceKlass* super_klass() const { return _super_klass; }
522 
523   ReferenceType super_reference_type() const;
524   bool is_instance_ref_klass() const;
525   bool is_java_lang_ref_Reference_subclass() const;
526 
527   AccessFlags access_flags() const { return _access_flags; }
528 
529   bool is_internal() const { return INTERNAL == _pub_level; }

 55  public:
 56   OopMapBlock* _nonstatic_oop_maps;
 57   unsigned int _nonstatic_oop_map_count;
 58   unsigned int _max_nonstatic_oop_maps;
 59 
 60   OopMapBlocksBuilder(unsigned int  max_blocks);
 61   OopMapBlock* last_oop_map() const;
 62   void initialize_inherited_blocks(OopMapBlock* blocks, unsigned int nof_blocks);
 63   void add(int offset, int count);
 64   void copy(OopMapBlock* dst);
 65   void compact();
 66   void print_on(outputStream* st) const;
 67   void print_value_on(outputStream* st) const;
 68 };
 69 
 70 // Values needed for oopmap and InstanceKlass creation
 71 class FieldLayoutInfo : public ResourceObj {
 72  public:
 73   OopMapBlocksBuilder* oop_map_blocks;
 74   int _instance_size;
 75   int _hash_offset;
 76   int _nonstatic_field_size;
 77   int _static_field_size;
 78   bool  _has_nonstatic_fields;
 79 };
 80 
 81 // Parser for for .class files
 82 //
 83 // The bytes describing the class file structure is read from a Stream object
 84 
 85 class ClassFileParser {
 86   friend class FieldLayoutBuilder;
 87   friend class FieldLayout;
 88 
 89   class ClassAnnotationCollector;
 90   class FieldAnnotationCollector;
 91 
 92  public:
 93   // The ClassFileParser has an associated "publicity" level
 94   // It is used to control which subsystems (if any)
 95   // will observe the parsing (logging, events, tracing).

491 
492  public:
493   ClassFileParser(ClassFileStream* stream,
494                   Symbol* name,
495                   ClassLoaderData* loader_data,
496                   const ClassLoadInfo* cl_info,
497                   Publicity pub_level,
498                   TRAPS);
499 
500   ~ClassFileParser();
501 
502   InstanceKlass* create_instance_klass(bool cf_changed_in_CFLH, const ClassInstanceInfo& cl_inst_info, TRAPS);
503 
504   const ClassFileStream* clone_stream() const;
505 
506   void set_klass_to_deallocate(InstanceKlass* klass);
507 
508   int static_field_size() const;
509   int total_oop_map_count() const;
510   jint layout_size() const;
511   int hash_offset() const;
512 
513   int vtable_size() const { return _vtable_size; }
514   int itable_size() const { return _itable_size; }
515 
516   u2 this_class_index() const { return _this_class_index; }
517 
518   bool is_hidden() const { return _is_hidden; }
519   bool is_interface() const { return _access_flags.is_interface(); }
520 
521   ClassLoaderData* loader_data() const { return _loader_data; }
522   const Symbol* class_name() const { return _class_name; }
523   const InstanceKlass* super_klass() const { return _super_klass; }
524 
525   ReferenceType super_reference_type() const;
526   bool is_instance_ref_klass() const;
527   bool is_java_lang_ref_Reference_subclass() const;
528 
529   AccessFlags access_flags() const { return _access_flags; }
530 
531   bool is_internal() const { return INTERNAL == _pub_level; }
< prev index next >