< prev index next >

src/hotspot/share/gc/parallel/psParallelCompact.hpp

Print this page

869   ObjectStartArray* const _start_array;
870   size_t                  _offset;
871 
872   inline void decrement_words_remaining(size_t words);
873   // Update variables to indicate that word_count words were processed.
874   inline void update_state(size_t words);
875 
876 public:
877   ParMarkBitMap*        bitmap() const { return _bitmap; }
878 
879   size_t    words_remaining()    const { return _words_remaining; }
880   bool      is_full()            const { return _words_remaining == 0; }
881   HeapWord* source()             const { return _source; }
882   void      set_source(HeapWord* addr) {
883     assert(addr != nullptr, "precondition");
884     _source = addr;
885   }
886 
887   // If the object will fit (size <= words_remaining()), copy it to the current
888   // destination, update the interior oops and the start array.
889   void do_addr(HeapWord* addr, size_t words);
890 
891   inline MoveAndUpdateClosure(ParMarkBitMap* bitmap, size_t region);
892 
893   // Accessors.
894   HeapWord* destination() const         { return _destination; }
895   HeapWord* copy_destination() const    { return _destination + _offset; }
896 
897   // Copy enough words to fill this closure or to the end of an object,
898   // whichever is smaller, starting at source(). The start array is not
899   // updated.
900   void copy_partial_obj(size_t partial_obj_size);
901 
902   virtual void complete_region(HeapWord* dest_addr, PSParallelCompact::RegionData* region_ptr);
903 };
904 
905 inline void MoveAndUpdateClosure::decrement_words_remaining(size_t words) {
906   assert(_words_remaining >= words, "processed too many words");
907   _words_remaining -= words;
908 }
909 

869   ObjectStartArray* const _start_array;
870   size_t                  _offset;
871 
872   inline void decrement_words_remaining(size_t words);
873   // Update variables to indicate that word_count words were processed.
874   inline void update_state(size_t words);
875 
876 public:
877   ParMarkBitMap*        bitmap() const { return _bitmap; }
878 
879   size_t    words_remaining()    const { return _words_remaining; }
880   bool      is_full()            const { return _words_remaining == 0; }
881   HeapWord* source()             const { return _source; }
882   void      set_source(HeapWord* addr) {
883     assert(addr != nullptr, "precondition");
884     _source = addr;
885   }
886 
887   // If the object will fit (size <= words_remaining()), copy it to the current
888   // destination, update the interior oops and the start array.
889   void do_addr(HeapWord* addr, size_t words, markWord mark);
890 
891   inline MoveAndUpdateClosure(ParMarkBitMap* bitmap, size_t region);
892 
893   // Accessors.
894   HeapWord* destination() const         { return _destination; }
895   HeapWord* copy_destination() const    { return _destination + _offset; }
896 
897   // Copy enough words to fill this closure or to the end of an object,
898   // whichever is smaller, starting at source(). The start array is not
899   // updated.
900   void copy_partial_obj(size_t partial_obj_size);
901 
902   virtual void complete_region(HeapWord* dest_addr, PSParallelCompact::RegionData* region_ptr);
903 };
904 
905 inline void MoveAndUpdateClosure::decrement_words_remaining(size_t words) {
906   assert(_words_remaining >= words, "processed too many words");
907   _words_remaining -= words;
908 }
909 
< prev index next >