< prev index next >
src/share/vm/runtime/reflectionUtils.hpp
Print this page
*** 43,54 ****
// ...
// }
class KlassStream VALUE_OBJ_CLASS_SPEC {
protected:
! instanceKlassHandle _klass; // current klass/interface iterated over
! instanceKlassHandle _base_klass; // initial klass/interface to iterate over
Array<Klass*>* _interfaces; // transitive interfaces for initial class
int _interface_index; // current interface being processed
bool _local_only; // process initial class/interface only
bool _classes_only; // process classes only (no interfaces)
bool _walk_defaults; // process default methods
--- 43,54 ----
// ...
// }
class KlassStream VALUE_OBJ_CLASS_SPEC {
protected:
! InstanceKlass* _klass; // current klass/interface iterated over
! InstanceKlass* _base_klass; // initial klass/interface to iterate over
Array<Klass*>* _interfaces; // transitive interfaces for initial class
int _interface_index; // current interface being processed
bool _local_only; // process initial class/interface only
bool _classes_only; // process classes only (no interfaces)
bool _walk_defaults; // process default methods
*** 58,77 ****
virtual int length() = 0;
public:
// constructor
! KlassStream(instanceKlassHandle klass, bool local_only, bool classes_only, bool walk_defaults);
// testing
bool eos();
// iterating
virtual void next() = 0;
// accessors
! instanceKlassHandle klass() const { return _klass; }
int index() const { return _index; }
bool base_class_search_defaults() const { return _base_class_search_defaults; }
void base_class_search_defaults(bool b) { _base_class_search_defaults = b; }
};
--- 58,77 ----
virtual int length() = 0;
public:
// constructor
! KlassStream(InstanceKlass* klass, bool local_only, bool classes_only, bool walk_defaults);
// testing
bool eos();
// iterating
virtual void next() = 0;
// accessors
! InstanceKlass* klass() const { return _klass; }
int index() const { return _index; }
bool base_class_search_defaults() const { return _base_class_search_defaults; }
void base_class_search_defaults(bool b) { _base_class_search_defaults = b; }
};
*** 95,105 ****
} else {
return _klass->methods();
}
}
public:
! MethodStream(instanceKlassHandle klass, bool local_only, bool classes_only)
: KlassStream(klass, local_only, classes_only, true) {
_index = length();
next();
}
--- 95,105 ----
} else {
return _klass->methods();
}
}
public:
! MethodStream(InstanceKlass* klass, bool local_only, bool classes_only)
: KlassStream(klass, local_only, classes_only, true) {
_index = length();
next();
}
*** 123,133 ****
int length() { return _klass->java_fields_count(); }
fieldDescriptor _fd_buf;
public:
! FieldStream(instanceKlassHandle klass, bool local_only, bool classes_only)
: KlassStream(klass, local_only, classes_only, false) {
_index = length();
next();
}
--- 123,133 ----
int length() { return _klass->java_fields_count(); }
fieldDescriptor _fd_buf;
public:
! FieldStream(InstanceKlass* klass, bool local_only, bool classes_only)
: KlassStream(klass, local_only, classes_only, false) {
_index = length();
next();
}
*** 150,160 ****
return _klass->field_offset( index() );
}
// bridge to a heavier API:
fieldDescriptor& field_descriptor() const {
fieldDescriptor& field = const_cast<fieldDescriptor&>(_fd_buf);
! field.reinitialize(_klass(), _index);
return field;
}
};
class FilteredField : public CHeapObj<mtInternal> {
--- 150,160 ----
return _klass->field_offset( index() );
}
// bridge to a heavier API:
fieldDescriptor& field_descriptor() const {
fieldDescriptor& field = const_cast<fieldDescriptor&>(_fd_buf);
! field.reinitialize(_klass, _index);
return field;
}
};
class FilteredField : public CHeapObj<mtInternal> {
*** 220,238 ****
private:
int _filtered_fields_count;
bool has_filtered_field() { return (_filtered_fields_count > 0); }
public:
! FilteredFieldStream(instanceKlassHandle klass, bool local_only, bool classes_only)
: FieldStream(klass, local_only, classes_only) {
! _filtered_fields_count = FilteredFieldsMap::filtered_fields_count((Klass*)klass(), local_only);
}
int field_count();
void next() {
_index -= 1;
if (has_filtered_field()) {
! while (_index >=0 && FilteredFieldsMap::is_filtered_field((Klass*)_klass(), offset())) {
_index -= 1;
}
}
}
};
--- 220,238 ----
private:
int _filtered_fields_count;
bool has_filtered_field() { return (_filtered_fields_count > 0); }
public:
! FilteredFieldStream(InstanceKlass* klass, bool local_only, bool classes_only)
: FieldStream(klass, local_only, classes_only) {
! _filtered_fields_count = FilteredFieldsMap::filtered_fields_count(klass, local_only);
}
int field_count();
void next() {
_index -= 1;
if (has_filtered_field()) {
! while (_index >=0 && FilteredFieldsMap::is_filtered_field((Klass*)_klass, offset())) {
_index -= 1;
}
}
}
};
< prev index next >