Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp @ 10285:4868caa99ecf
8014339: Improve assert and remove some dead code from parMarkBitMap.hpp/cpp
Reviewed-by: stefank, tschatzl
author | brutisso |
---|---|
date | Mon, 13 May 2013 14:09:05 +0200 |
parents | b9a9ed0f8eeb |
children | 10f759898d40 |
comparison
equal
deleted
inserted
replaced
10284:7a95933197d0 | 10285:4868caa99ecf |
---|---|
22 * | 22 * |
23 */ | 23 */ |
24 | 24 |
25 #include "precompiled.hpp" | 25 #include "precompiled.hpp" |
26 #include "gc_implementation/parallelScavenge/parMarkBitMap.hpp" | 26 #include "gc_implementation/parallelScavenge/parMarkBitMap.hpp" |
27 #include "gc_implementation/parallelScavenge/parMarkBitMap.inline.hpp" | |
28 #include "gc_implementation/parallelScavenge/psParallelCompact.hpp" | 27 #include "gc_implementation/parallelScavenge/psParallelCompact.hpp" |
29 #include "oops/oop.inline.hpp" | 28 #include "oops/oop.inline.hpp" |
30 #include "runtime/os.hpp" | 29 #include "runtime/os.hpp" |
31 #include "utilities/bitMap.inline.hpp" | 30 #include "utilities/bitMap.inline.hpp" |
32 #include "services/memTracker.hpp" | 31 #include "services/memTracker.hpp" |
106 return true; | 105 return true; |
107 } | 106 } |
108 return false; | 107 return false; |
109 } | 108 } |
110 | 109 |
111 size_t | |
112 ParMarkBitMap::live_words_in_range(HeapWord* beg_addr, HeapWord* end_addr) const | |
113 { | |
114 assert(beg_addr <= end_addr, "bad range"); | |
115 | |
116 idx_t live_bits = 0; | |
117 | |
118 // The bitmap routines require the right boundary to be word-aligned. | |
119 const idx_t end_bit = addr_to_bit(end_addr); | |
120 const idx_t range_end = BitMap::word_align_up(end_bit); | |
121 | |
122 idx_t beg_bit = find_obj_beg(addr_to_bit(beg_addr), range_end); | |
123 while (beg_bit < end_bit) { | |
124 idx_t tmp_end = find_obj_end(beg_bit, range_end); | |
125 if (tmp_end < end_bit) { | |
126 live_bits += tmp_end - beg_bit + 1; | |
127 beg_bit = find_obj_beg(tmp_end + 1, range_end); | |
128 } else { | |
129 live_bits += end_bit - beg_bit; // No + 1 here; end_bit is not counted. | |
130 return bits_to_words(live_bits); | |
131 } | |
132 } | |
133 return bits_to_words(live_bits); | |
134 } | |
135 | |
136 size_t ParMarkBitMap::live_words_in_range(HeapWord* beg_addr, oop end_obj) const | 110 size_t ParMarkBitMap::live_words_in_range(HeapWord* beg_addr, oop end_obj) const |
137 { | 111 { |
138 assert(beg_addr <= (HeapWord*)end_obj, "bad range"); | 112 assert(beg_addr <= (HeapWord*)end_obj, "bad range"); |
139 assert(is_marked(end_obj), "end_obj must be live"); | 113 assert(is_marked(end_obj), "end_obj must be live"); |
140 | 114 |
242 | 216 |
243 live_closure->set_source(bit_to_addr(range_end)); | 217 live_closure->set_source(bit_to_addr(range_end)); |
244 return complete; | 218 return complete; |
245 } | 219 } |
246 | 220 |
247 #ifndef PRODUCT | |
248 void ParMarkBitMap::reset_counters() | |
249 { | |
250 _cas_tries = _cas_retries = _cas_by_another = 0; | |
251 } | |
252 #endif // #ifndef PRODUCT | |
253 | |
254 #ifdef ASSERT | 221 #ifdef ASSERT |
255 void ParMarkBitMap::verify_clear() const | 222 void ParMarkBitMap::verify_clear() const |
256 { | 223 { |
257 const idx_t* const beg = (const idx_t*)_virtual_space->committed_low_addr(); | 224 const idx_t* const beg = (const idx_t*)_virtual_space->committed_low_addr(); |
258 const idx_t* const end = (const idx_t*)_virtual_space->committed_high_addr(); | 225 const idx_t* const end = (const idx_t*)_virtual_space->committed_high_addr(); |