equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
105 _index = 0; |
105 _index = 0; |
106 _limit = klass->java_fields_count(); |
106 _limit = klass->java_fields_count(); |
107 init_generic_signature_start_slot(); |
107 init_generic_signature_start_slot(); |
108 assert(klass == field_holder(), ""); |
108 assert(klass == field_holder(), ""); |
109 } |
109 } |
110 FieldStreamBase(instanceKlassHandle klass) { |
|
111 _fields = klass->fields(); |
|
112 _constants = klass->constants(); |
|
113 _index = 0; |
|
114 _limit = klass->java_fields_count(); |
|
115 init_generic_signature_start_slot(); |
|
116 assert(klass == field_holder(), ""); |
|
117 } |
|
118 |
110 |
119 // accessors |
111 // accessors |
120 int index() const { return _index; } |
112 int index() const { return _index; } |
121 |
113 |
122 void next() { |
114 void next() { |
194 }; |
186 }; |
195 |
187 |
196 // Iterate over only the internal fields |
188 // Iterate over only the internal fields |
197 class JavaFieldStream : public FieldStreamBase { |
189 class JavaFieldStream : public FieldStreamBase { |
198 public: |
190 public: |
199 JavaFieldStream(instanceKlassHandle k): FieldStreamBase(k->fields(), k->constants(), 0, k->java_fields_count()) {} |
191 JavaFieldStream(const InstanceKlass* k): FieldStreamBase(k->fields(), k->constants(), 0, k->java_fields_count()) {} |
200 |
192 |
201 int name_index() const { |
193 int name_index() const { |
202 assert(!field()->is_internal(), "regular only"); |
194 assert(!field()->is_internal(), "regular only"); |
203 return field()->name_index(); |
195 return field()->name_index(); |
204 } |
196 } |
243 |
235 |
244 // Iterate over only the internal fields |
236 // Iterate over only the internal fields |
245 class InternalFieldStream : public FieldStreamBase { |
237 class InternalFieldStream : public FieldStreamBase { |
246 public: |
238 public: |
247 InternalFieldStream(InstanceKlass* k): FieldStreamBase(k->fields(), k->constants(), k->java_fields_count(), 0) {} |
239 InternalFieldStream(InstanceKlass* k): FieldStreamBase(k->fields(), k->constants(), k->java_fields_count(), 0) {} |
248 InternalFieldStream(instanceKlassHandle k): FieldStreamBase(k->fields(), k->constants(), k->java_fields_count(), 0) {} |
|
249 }; |
240 }; |
250 |
241 |
251 |
242 |
252 class AllFieldStream : public FieldStreamBase { |
243 class AllFieldStream : public FieldStreamBase { |
253 public: |
244 public: |
254 AllFieldStream(Array<u2>* fields, const constantPoolHandle& constants): FieldStreamBase(fields, constants) {} |
245 AllFieldStream(Array<u2>* fields, const constantPoolHandle& constants): FieldStreamBase(fields, constants) {} |
255 AllFieldStream(InstanceKlass* k): FieldStreamBase(k->fields(), k->constants()) {} |
246 AllFieldStream(InstanceKlass* k): FieldStreamBase(k->fields(), k->constants()) {} |
256 AllFieldStream(instanceKlassHandle k): FieldStreamBase(k->fields(), k->constants()) {} |
|
257 }; |
247 }; |
258 |
248 |
259 #endif // SHARE_VM_OOPS_FIELDSTREAMS_HPP |
249 #endif // SHARE_VM_OOPS_FIELDSTREAMS_HPP |