equal
deleted
inserted
replaced
259 } |
259 } |
260 |
260 |
261 virtual void work(uint worker_id) { |
261 virtual void work(uint worker_id) { |
262 size_t const actual_chunk_size = MAX2(chunk_size(), _page_size); |
262 size_t const actual_chunk_size = MAX2(chunk_size(), _page_size); |
263 while (true) { |
263 while (true) { |
264 char* touch_addr = Atomic::add(actual_chunk_size, &_cur_addr) - actual_chunk_size; |
264 char* touch_addr = Atomic::add(&_cur_addr, actual_chunk_size) - actual_chunk_size; |
265 if (touch_addr < _start_addr || touch_addr >= _end_addr) { |
265 if (touch_addr < _start_addr || touch_addr >= _end_addr) { |
266 break; |
266 break; |
267 } |
267 } |
268 char* end_addr = touch_addr + MIN2(actual_chunk_size, pointer_delta(_end_addr, touch_addr, sizeof(char))); |
268 char* end_addr = touch_addr + MIN2(actual_chunk_size, pointer_delta(_end_addr, touch_addr, sizeof(char))); |
269 os::pretouch_memory(touch_addr, end_addr, _page_size); |
269 os::pretouch_memory(touch_addr, end_addr, _page_size); |