src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp

changeset 106
ebe1a38c3e4f
parent 34
76df293e57aa
child 116
09e17e497778
equal deleted inserted replaced
105:b863b5fdce61 106:ebe1a38c3e4f
3230 beg_bit = bitmap->find_obj_beg(beg_bit + live_bits, range_end); 3230 beg_bit = bitmap->find_obj_beg(beg_bit + live_bits, range_end);
3231 while (beg_bit < range_end) { 3231 while (beg_bit < range_end) {
3232 const size_t new_block = beg_bit >> Log2BitsPerBlock; 3232 const size_t new_block = beg_bit >> Log2BitsPerBlock;
3233 if (new_block != cur_block) { 3233 if (new_block != cur_block) {
3234 cur_block = new_block; 3234 cur_block = new_block;
3235 sd.block(cur_block)->set_offset(bitmap->bits_to_words(live_bits));
3236
3237 #ifdef MIPS64 3235 #ifdef MIPS64
3238 /* 2016/5/4 Jin: On 3A2000-B, when multiple threads write to 3236 /* 2016/5/4 Jin: On 3A2000-B, when multiple threads write to
3239 the same memory location without explict synchronization, 3237 the same memory location without explict synchronization,
3240 sync is required for access correctness. */ 3238 sync is required for access correctness. */
3241 OrderAccess::fence(); 3239 OrderAccess::fence();
3242 #endif 3240 #endif
3241 sd.block(cur_block)->set_offset(bitmap->bits_to_words(live_bits));
3243 } 3242 }
3244 3243
3245 const size_t end_bit = bitmap->find_obj_end(beg_bit, range_end); 3244 const size_t end_bit = bitmap->find_obj_end(beg_bit, range_end);
3246 if (end_bit < range_end - 1) { 3245 if (end_bit < range_end - 1) {
3247 live_bits += end_bit - beg_bit + 1; 3246 live_bits += end_bit - beg_bit + 1;

mercurial