< prev index next >

src/share/vm/runtime/reflectionUtils.hpp

Print this page




 179   static bool is_filtered_field(Klass* klass, int field_offset) {
 180     for (int i=0; i < _filtered_fields->length(); i++) {
 181       if (klass == _filtered_fields->at(i)->klass() &&
 182         field_offset == _filtered_fields->at(i)->field_offset()) {
 183         return true;
 184       }
 185     }
 186     return false;
 187   }
 188   static int  filtered_fields_count(Klass* klass, bool local_only) {
 189     int nflds = 0;
 190     for (int i=0; i < _filtered_fields->length(); i++) {
 191       if (local_only && klass == _filtered_fields->at(i)->klass()) {
 192         nflds++;
 193       } else if (klass->is_subtype_of(_filtered_fields->at(i)->klass())) {
 194         nflds++;
 195       }
 196     }
 197     return nflds;
 198   }
 199   // Enhance Class Redefinition Support
 200   static void classes_do(KlassClosure* f) {
 201     for (int i = 0; i < _filtered_fields->length(); i++) {
 202       f->do_klass(_filtered_fields->at(i)->klass());
 203     }
 204   }
 205 };
 206 
 207 
 208 // A FilteredFieldStream streams over all fields in a class, superclasses and
 209 // (super)interfaces. Streaming is done in reverse order (subclasses first,
 210 // fields in reverse order)
 211 //
 212 // Usage:
 213 //
 214 //    for (FilteredFieldStream st(k, false, false); !st.eos(); st.next()) {
 215 //      Symbol* field_name = st.name();
 216 //      ...
 217 //    }
 218 
 219 class FilteredFieldStream : public FieldStream {
 220  private:
 221   int  _filtered_fields_count;
 222   bool has_filtered_field() { return (_filtered_fields_count > 0); }
 223 
 224  public:


 179   static bool is_filtered_field(Klass* klass, int field_offset) {
 180     for (int i=0; i < _filtered_fields->length(); i++) {
 181       if (klass == _filtered_fields->at(i)->klass() &&
 182         field_offset == _filtered_fields->at(i)->field_offset()) {
 183         return true;
 184       }
 185     }
 186     return false;
 187   }
 188   static int  filtered_fields_count(Klass* klass, bool local_only) {
 189     int nflds = 0;
 190     for (int i=0; i < _filtered_fields->length(); i++) {
 191       if (local_only && klass == _filtered_fields->at(i)->klass()) {
 192         nflds++;
 193       } else if (klass->is_subtype_of(_filtered_fields->at(i)->klass())) {
 194         nflds++;
 195       }
 196     }
 197     return nflds;
 198   }






 199 };
 200 
 201 
 202 // A FilteredFieldStream streams over all fields in a class, superclasses and
 203 // (super)interfaces. Streaming is done in reverse order (subclasses first,
 204 // fields in reverse order)
 205 //
 206 // Usage:
 207 //
 208 //    for (FilteredFieldStream st(k, false, false); !st.eos(); st.next()) {
 209 //      Symbol* field_name = st.name();
 210 //      ...
 211 //    }
 212 
 213 class FilteredFieldStream : public FieldStream {
 214  private:
 215   int  _filtered_fields_count;
 216   bool has_filtered_field() { return (_filtered_fields_count > 0); }
 217 
 218  public:
< prev index next >