src/share/vm/runtime/reflectionUtils.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8014013 Sdiff src/share/vm/runtime

src/share/vm/runtime/reflectionUtils.hpp

Print this page




  92 
  93   void next() { _index--; }
  94   Method* method() const { return methods()->at(index()); }
  95 };
  96 
  97 
  98 // A FieldStream streams over all fields in a class, superclasses and (super)interfaces.
  99 // Streaming is done in reverse order (subclasses first, fields in reverse order)
 100 // Usage:
 101 //
 102 //    for (FieldStream st(k, false, false); !st.eos(); st.next()) {
 103 //      Symbol* field_name = st.name();
 104 //      ...
 105 //    }
 106 
 107 
 108 class FieldStream : public KlassStream {
 109  private:
 110   int length() const                { return _klass->java_fields_count(); }
 111 


 112  public:
 113   FieldStream(instanceKlassHandle klass, bool local_only, bool classes_only)
 114     : KlassStream(klass, local_only, classes_only) {
 115     _index = length();
 116     next();
 117   }
 118 
 119   void next() { _index -= 1; }
 120 
 121   // Accessors for current field
 122   AccessFlags access_flags() const {
 123     AccessFlags flags;
 124     flags.set_flags(_klass->field_access_flags(_index));
 125     return flags;
 126   }
 127   Symbol* name() const {
 128     return _klass->field_name(_index);
 129   }
 130   Symbol* signature() const {
 131     return _klass->field_signature(_index);
 132   }
 133   // missing: initval()
 134   int offset() const {
 135     return _klass->field_offset( index() );
 136   }






 137 };
 138 
 139 class FilteredField : public CHeapObj<mtInternal>  {
 140  private:
 141   Klass* _klass;
 142   int    _field_offset;
 143 
 144  public:
 145   FilteredField(Klass* klass, int field_offset) {
 146     _klass = klass;
 147     _field_offset = field_offset;
 148   }
 149   Klass* klass() { return _klass; }
 150   int  field_offset() { return _field_offset; }
 151 };
 152 
 153 class FilteredFieldsMap : AllStatic {
 154  private:
 155   static GrowableArray<FilteredField *> *_filtered_fields;
 156  public:




  92 
  93   void next() { _index--; }
  94   Method* method() const { return methods()->at(index()); }
  95 };
  96 
  97 
  98 // A FieldStream streams over all fields in a class, superclasses and (super)interfaces.
  99 // Streaming is done in reverse order (subclasses first, fields in reverse order)
 100 // Usage:
 101 //
 102 //    for (FieldStream st(k, false, false); !st.eos(); st.next()) {
 103 //      Symbol* field_name = st.name();
 104 //      ...
 105 //    }
 106 
 107 
 108 class FieldStream : public KlassStream {
 109  private:
 110   int length() const                { return _klass->java_fields_count(); }
 111 
 112   fieldDescriptor _fd_buf;
 113 
 114  public:
 115   FieldStream(instanceKlassHandle klass, bool local_only, bool classes_only)
 116     : KlassStream(klass, local_only, classes_only) {
 117     _index = length();
 118     next();
 119   }
 120 
 121   void next() { _index -= 1; }
 122 
 123   // Accessors for current field
 124   AccessFlags access_flags() const {
 125     AccessFlags flags;
 126     flags.set_flags(_klass->field_access_flags(_index));
 127     return flags;
 128   }
 129   Symbol* name() const {
 130     return _klass->field_name(_index);
 131   }
 132   Symbol* signature() const {
 133     return _klass->field_signature(_index);
 134   }
 135   // missing: initval()
 136   int offset() const {
 137     return _klass->field_offset( index() );
 138   }
 139   // bridge to a heavier API:
 140   fieldDescriptor& field_descriptor() const {
 141     fieldDescriptor& field = const_cast<fieldDescriptor&>(_fd_buf);
 142     field.reinitialize(_klass(), _index);
 143     return field;
 144   }
 145 };
 146 
 147 class FilteredField : public CHeapObj<mtInternal>  {
 148  private:
 149   Klass* _klass;
 150   int    _field_offset;
 151 
 152  public:
 153   FilteredField(Klass* klass, int field_offset) {
 154     _klass = klass;
 155     _field_offset = field_offset;
 156   }
 157   Klass* klass() { return _klass; }
 158   int  field_offset() { return _field_offset; }
 159 };
 160 
 161 class FilteredFieldsMap : AllStatic {
 162  private:
 163   static GrowableArray<FilteredField *> *_filtered_fields;
 164  public:


src/share/vm/runtime/reflectionUtils.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File