equal
deleted
inserted
replaced
98 // A FieldStream streams over all fields in a class, superclasses and (super)interfaces. |
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) |
99 // Streaming is done in reverse order (subclasses first, fields in reverse order) |
100 // Usage: |
100 // Usage: |
101 // |
101 // |
102 // for (FieldStream st(k, false, false); !st.eos(); st.next()) { |
102 // for (FieldStream st(k, false, false); !st.eos(); st.next()) { |
103 // symbolOop field_name = st.name(); |
103 // Symbol* field_name = st.name(); |
104 // ... |
104 // ... |
105 // } |
105 // } |
106 |
106 |
107 |
107 |
108 class FieldStream : public KlassStream { |
108 class FieldStream : public KlassStream { |
124 AccessFlags access_flags() const { |
124 AccessFlags access_flags() const { |
125 AccessFlags flags; |
125 AccessFlags flags; |
126 flags.set_flags(fields()->ushort_at(index() + instanceKlass::access_flags_offset)); |
126 flags.set_flags(fields()->ushort_at(index() + instanceKlass::access_flags_offset)); |
127 return flags; |
127 return flags; |
128 } |
128 } |
129 symbolOop name() const { |
129 Symbol* name() const { |
130 int name_index = fields()->ushort_at(index() + instanceKlass::name_index_offset); |
130 int name_index = fields()->ushort_at(index() + instanceKlass::name_index_offset); |
131 return constants()->symbol_at(name_index); |
131 return constants()->symbol_at(name_index); |
132 } |
132 } |
133 symbolOop signature() const { |
133 Symbol* signature() const { |
134 int signature_index = fields()->ushort_at(index() + |
134 int signature_index = fields()->ushort_at(index() + |
135 instanceKlass::signature_index_offset); |
135 instanceKlass::signature_index_offset); |
136 return constants()->symbol_at(signature_index); |
136 return constants()->symbol_at(signature_index); |
137 } |
137 } |
138 // missing: initval() |
138 // missing: initval() |
195 // fields in reverse order) |
195 // fields in reverse order) |
196 // |
196 // |
197 // Usage: |
197 // Usage: |
198 // |
198 // |
199 // for (FilteredFieldStream st(k, false, false); !st.eos(); st.next()) { |
199 // for (FilteredFieldStream st(k, false, false); !st.eos(); st.next()) { |
200 // symbolOop field_name = st.name(); |
200 // Symbol* field_name = st.name(); |
201 // ... |
201 // ... |
202 // } |
202 // } |
203 |
203 |
204 class FilteredFieldStream : public FieldStream { |
204 class FilteredFieldStream : public FieldStream { |
205 private: |
205 private: |