3234 cur_block = new_block; |
3234 cur_block = new_block; |
3235 #ifdef MIPS64 |
3235 #ifdef MIPS64 |
3236 /* 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 |
3237 the same memory location without explict synchronization, |
3237 the same memory location without explict synchronization, |
3238 sync is required for access correctness. */ |
3238 sync is required for access correctness. */ |
3239 OrderAccess::fence(); |
3239 if (Use3A2000) OrderAccess::fence(); |
3240 #endif |
3240 #endif |
3241 sd.block(cur_block)->set_offset(bitmap->bits_to_words(live_bits)); |
3241 sd.block(cur_block)->set_offset(bitmap->bits_to_words(live_bits)); |
3242 #ifdef MIPS64 |
3242 #ifdef MIPS64 |
3243 OrderAccess::fence(); |
3243 if (Use3A2000) OrderAccess::fence(); |
3244 #endif |
3244 #endif |
3245 } |
3245 } |
3246 |
3246 |
3247 const size_t end_bit = bitmap->find_obj_end(beg_bit, range_end); |
3247 const size_t end_bit = bitmap->find_obj_end(beg_bit, range_end); |
3248 if (end_bit < range_end - 1) { |
3248 if (end_bit < range_end - 1) { |