< prev index next >

src/hotspot/share/gc/z/zLiveMap.inline.hpp

Print this page




 104 }
 105 
 106 inline bool ZLiveMap::set(size_t index, bool finalizable, bool& inc_live) {
 107   if (!is_marked()) {
 108     // First object to be marked during this
 109     // cycle, reset marking information.
 110     reset(index);
 111   }
 112 
 113   const BitMap::idx_t segment = index_to_segment(index);
 114   if (!is_segment_live(segment)) {
 115     // First object to be marked in this segment during
 116     // this cycle, reset segment bitmap.
 117     reset_segment(segment);
 118   }
 119 
 120   return _bitmap.par_set_bit_pair(index, finalizable, inc_live);
 121 }
 122 
 123 inline void ZLiveMap::inc_live(uint32_t objects, size_t bytes) {
 124   Atomic::add(objects, &_live_objects);
 125   Atomic::add(bytes, &_live_bytes);
 126 }
 127 
 128 inline BitMap::idx_t ZLiveMap::segment_start(BitMap::idx_t segment) const {
 129   return segment_size() * segment;
 130 }
 131 
 132 inline BitMap::idx_t ZLiveMap::segment_end(BitMap::idx_t segment) const {
 133   return segment_start(segment) + segment_size();
 134 }
 135 
 136 inline void ZLiveMap::iterate_segment(ObjectClosure* cl, BitMap::idx_t segment, uintptr_t page_start, size_t page_object_alignment_shift) {
 137   assert(is_segment_live(segment), "Must be");
 138 
 139   const BitMap::idx_t start_index = segment_start(segment);
 140   const BitMap::idx_t end_index   = segment_end(segment);
 141   BitMap::idx_t index = _bitmap.get_next_one_offset(start_index, end_index);
 142 
 143   while (index < end_index) {
 144     // Calculate object address
 145     const uintptr_t addr = page_start + ((index / 2) << page_object_alignment_shift);




 104 }
 105 
 106 inline bool ZLiveMap::set(size_t index, bool finalizable, bool& inc_live) {
 107   if (!is_marked()) {
 108     // First object to be marked during this
 109     // cycle, reset marking information.
 110     reset(index);
 111   }
 112 
 113   const BitMap::idx_t segment = index_to_segment(index);
 114   if (!is_segment_live(segment)) {
 115     // First object to be marked in this segment during
 116     // this cycle, reset segment bitmap.
 117     reset_segment(segment);
 118   }
 119 
 120   return _bitmap.par_set_bit_pair(index, finalizable, inc_live);
 121 }
 122 
 123 inline void ZLiveMap::inc_live(uint32_t objects, size_t bytes) {
 124   Atomic::add(&_live_objects, objects);
 125   Atomic::add(&_live_bytes, bytes);
 126 }
 127 
 128 inline BitMap::idx_t ZLiveMap::segment_start(BitMap::idx_t segment) const {
 129   return segment_size() * segment;
 130 }
 131 
 132 inline BitMap::idx_t ZLiveMap::segment_end(BitMap::idx_t segment) const {
 133   return segment_start(segment) + segment_size();
 134 }
 135 
 136 inline void ZLiveMap::iterate_segment(ObjectClosure* cl, BitMap::idx_t segment, uintptr_t page_start, size_t page_object_alignment_shift) {
 137   assert(is_segment_live(segment), "Must be");
 138 
 139   const BitMap::idx_t start_index = segment_start(segment);
 140   const BitMap::idx_t end_index   = segment_end(segment);
 141   BitMap::idx_t index = _bitmap.get_next_one_offset(start_index, end_index);
 142 
 143   while (index < end_index) {
 144     // Calculate object address
 145     const uintptr_t addr = page_start + ((index / 2) << page_object_alignment_shift);


< prev index next >