Mercurial > hg > graal-compiler
comparison src/share/vm/runtime/reflectionUtils.hpp @ 2177:3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
Summary: move symbols from permgen into C heap and reference count them
Reviewed-by: never, acorn, jmasa, stefank
author | coleenp |
---|---|
date | Thu, 27 Jan 2011 16:11:27 -0800 |
parents | f95d63e2154a |
children | 1d1603768966 |
comparison
equal
deleted
inserted
replaced
2176:27e4ea99855d | 2177:3582bf76420e |
---|---|
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: |