103
104 log_trace(gc)("Mark segment reset contention, thread: " PTR_FORMAT " (%s), map: " PTR_FORMAT ", segment: " SIZE_FORMAT,
105 ZThread::id(), ZThread::name(), p2i(this), segment);
106 }
107 }
108
109 // Segment is live
110 return;
111 }
112
113 // Segment claimed, clear it
114 const BitMap::idx_t start_index = segment_start(segment);
115 const BitMap::idx_t end_index = segment_end(segment);
116 if (segment_size() / BitsPerWord >= 32) {
117 _bitmap.clear_large_range(start_index, end_index);
118 } else {
119 _bitmap.clear_range(start_index, end_index);
120 }
121
122 // Set live bit
123 const bool success = set_segment_live_atomic(segment);
124 assert(success, "Should never fail");
125 }
126
127 void ZLiveMap::resize(uint32_t size) {
128 const size_t new_bitmap_size = bitmap_size(size, nsegments);
129 if (_bitmap.size() != new_bitmap_size) {
130 _bitmap.reinitialize(new_bitmap_size, false /* clear */);
131 _segment_shift = exact_log2(segment_size());
132 }
133 }
|
103
104 log_trace(gc)("Mark segment reset contention, thread: " PTR_FORMAT " (%s), map: " PTR_FORMAT ", segment: " SIZE_FORMAT,
105 ZThread::id(), ZThread::name(), p2i(this), segment);
106 }
107 }
108
109 // Segment is live
110 return;
111 }
112
113 // Segment claimed, clear it
114 const BitMap::idx_t start_index = segment_start(segment);
115 const BitMap::idx_t end_index = segment_end(segment);
116 if (segment_size() / BitsPerWord >= 32) {
117 _bitmap.clear_large_range(start_index, end_index);
118 } else {
119 _bitmap.clear_range(start_index, end_index);
120 }
121
122 // Set live bit
123 const bool success = set_segment_live(segment);
124 assert(success, "Should never fail");
125 }
126
127 void ZLiveMap::resize(uint32_t size) {
128 const size_t new_bitmap_size = bitmap_size(size, nsegments);
129 if (_bitmap.size() != new_bitmap_size) {
130 _bitmap.reinitialize(new_bitmap_size, false /* clear */);
131 _segment_shift = exact_log2(segment_size());
132 }
133 }
|