hotspot/src/share/vm/oops/fieldStreams.hpp
changeset 46329 53ccc37bda19
parent 33593 60764a78fa5c
equal deleted inserted replaced
46328:6061df52d610 46329:53ccc37bda19
     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