src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.hpp

Print this page
rev 6796 : [mq]: templateOopIterate


 170   void track(PromotedObject* trackOop);      // keep track of a promoted oop
 171   // The following variant must be used when trackOop is not fully
 172   // initialized and has a NULL klass:
 173   void track(PromotedObject* trackOop, Klass* klassOfOop); // keep track of a promoted oop
 174   void setSpace(CompactibleFreeListSpace* sp) { _space = sp; }
 175   CompactibleFreeListSpace* space() const     { return _space; }
 176   markOop nextDisplacedHeader(); // get next header & forward spool pointer
 177   void    saveDisplacedHeader(markOop hdr);
 178                                  // save header and forward spool
 179 
 180   inline size_t refillSize() const;
 181 
 182   SpoolBlock* getSpoolBlock();   // return a free spooling block
 183   inline bool has_spooling_space() {
 184     return _spoolTail != NULL && _spoolTail->bufferSize > _nextIndex;
 185   }
 186   // ensure that spooling space exists
 187   bool ensure_spooling_space() {
 188     return has_spooling_space() || ensure_spooling_space_work();
 189   }
 190   #define PROMOTED_OOPS_ITERATE_DECL(OopClosureType, nv_suffix)  \
 191     void promoted_oops_iterate##nv_suffix(OopClosureType* cl);
 192   ALL_SINCE_SAVE_MARKS_CLOSURES(PROMOTED_OOPS_ITERATE_DECL)
 193   #undef PROMOTED_OOPS_ITERATE_DECL
 194   void promoted_oops_iterate(OopsInGenClosure* cl) {
 195     promoted_oops_iterate_v(cl);
 196   }
 197   void verify()  const;
 198   void reset() {
 199     _promoHead = NULL;
 200     _promoTail = NULL;
 201     _spoolHead = NULL;
 202     _spoolTail = NULL;
 203     _spareSpool = NULL;
 204     _firstIndex = 0;
 205     _nextIndex = 0;
 206 
 207   }
 208 
 209   void print_on(outputStream* st) const;
 210   void print_statistics(uint worker_id) const;
 211 };
 212 
 213 
 214 #endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_PROMOTIONINFO_HPP


 170   void track(PromotedObject* trackOop);      // keep track of a promoted oop
 171   // The following variant must be used when trackOop is not fully
 172   // initialized and has a NULL klass:
 173   void track(PromotedObject* trackOop, Klass* klassOfOop); // keep track of a promoted oop
 174   void setSpace(CompactibleFreeListSpace* sp) { _space = sp; }
 175   CompactibleFreeListSpace* space() const     { return _space; }
 176   markOop nextDisplacedHeader(); // get next header & forward spool pointer
 177   void    saveDisplacedHeader(markOop hdr);
 178                                  // save header and forward spool
 179 
 180   inline size_t refillSize() const;
 181 
 182   SpoolBlock* getSpoolBlock();   // return a free spooling block
 183   inline bool has_spooling_space() {
 184     return _spoolTail != NULL && _spoolTail->bufferSize > _nextIndex;
 185   }
 186   // ensure that spooling space exists
 187   bool ensure_spooling_space() {
 188     return has_spooling_space() || ensure_spooling_space_work();
 189   }
 190 
 191   template <bool nv, typename OopClosureType>
 192   void promoted_oops_iterate(OopClosureType* cl);
 193 



 194   void verify()  const;
 195   void reset() {
 196     _promoHead = NULL;
 197     _promoTail = NULL;
 198     _spoolHead = NULL;
 199     _spoolTail = NULL;
 200     _spareSpool = NULL;
 201     _firstIndex = 0;
 202     _nextIndex = 0;
 203 
 204   }
 205 
 206   void print_on(outputStream* st) const;
 207   void print_statistics(uint worker_id) const;
 208 };
 209 
 210 
 211 #endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_PROMOTIONINFO_HPP