src/hotspot/share/oops/fieldStreams.hpp
changeset 59056 15936b142f86
parent 53244 9807daeb47c4
equal deleted inserted replaced
59055:57ad70bcf06c 59056:15936b142f86
    77     _generic_signature_slot = length + skipped_generic_signature_slots;
    77     _generic_signature_slot = length + skipped_generic_signature_slots;
    78     assert(_generic_signature_slot <= _fields->length(), "");
    78     assert(_generic_signature_slot <= _fields->length(), "");
    79     return num_fields;
    79     return num_fields;
    80   }
    80   }
    81 
    81 
    82   FieldStreamBase(Array<u2>* fields, const constantPoolHandle& constants, int start, int limit) {
    82   inline FieldStreamBase(Array<u2>* fields, ConstantPool* constants, int start, int limit);
    83     _fields = fields;
    83 
    84     _constants = constants;
    84   inline FieldStreamBase(Array<u2>* fields, ConstantPool* constants);
    85     _index = start;
    85  public:
    86     int num_fields = init_generic_signature_start_slot();
    86   inline FieldStreamBase(InstanceKlass* klass);
    87     if (limit < start) {
       
    88       _limit = num_fields;
       
    89     } else {
       
    90       _limit = limit;
       
    91     }
       
    92   }
       
    93 
       
    94   FieldStreamBase(Array<u2>* fields, const constantPoolHandle& constants) {
       
    95     _fields = fields;
       
    96     _constants = constants;
       
    97     _index = 0;
       
    98     _limit = init_generic_signature_start_slot();
       
    99   }
       
   100 
       
   101  public:
       
   102   FieldStreamBase(InstanceKlass* klass) {
       
   103     _fields = klass->fields();
       
   104     _constants = klass->constants();
       
   105     _index = 0;
       
   106     _limit = klass->java_fields_count();
       
   107     init_generic_signature_start_slot();
       
   108     assert(klass == field_holder(), "");
       
   109   }
       
   110 
    87 
   111   // accessors
    88   // accessors
   112   int index() const                 { return _index; }
    89   int index() const                 { return _index; }
   113 
    90 
   114   void next() {
    91   void next() {
   134   void set_access_flags(AccessFlags flags) const {
   111   void set_access_flags(AccessFlags flags) const {
   135     set_access_flags(flags.as_short());
   112     set_access_flags(flags.as_short());
   136   }
   113   }
   137 
   114 
   138   Symbol* name() const {
   115   Symbol* name() const {
   139     return field()->name(_constants);
   116     return field()->name(_constants());
   140   }
   117   }
   141 
   118 
   142   Symbol* signature() const {
   119   Symbol* signature() const {
   143     return field()->signature(_constants);
   120     return field()->signature(_constants());
   144   }
   121   }
   145 
   122 
   146   Symbol* generic_signature() const {
   123   Symbol* generic_signature() const {
   147     if (access_flags().field_has_generic_signature()) {
   124     if (access_flags().field_has_generic_signature()) {
   148       assert(_generic_signature_slot < _fields->length(), "out of bounds");
   125       assert(_generic_signature_slot < _fields->length(), "out of bounds");
   240 };
   217 };
   241 
   218 
   242 
   219 
   243 class AllFieldStream : public FieldStreamBase {
   220 class AllFieldStream : public FieldStreamBase {
   244  public:
   221  public:
   245   AllFieldStream(Array<u2>* fields, const constantPoolHandle& constants): FieldStreamBase(fields, constants) {}
   222   AllFieldStream(Array<u2>* fields, ConstantPool* constants): FieldStreamBase(fields, constants) {}
   246   AllFieldStream(InstanceKlass* k):      FieldStreamBase(k->fields(), k->constants()) {}
   223   AllFieldStream(InstanceKlass* k):      FieldStreamBase(k->fields(), k->constants()) {}
   247 };
   224 };
   248 
   225 
   249 #endif // SHARE_OOPS_FIELDSTREAMS_HPP
   226 #endif // SHARE_OOPS_FIELDSTREAMS_HPP