equal
deleted
inserted
replaced
249 } |
249 } |
250 |
250 |
251 virtual void work(uint worker_id) { |
251 virtual void work(uint worker_id) { |
252 size_t const actual_chunk_size = MAX2(chunk_size(), _page_size); |
252 size_t const actual_chunk_size = MAX2(chunk_size(), _page_size); |
253 while (true) { |
253 while (true) { |
254 char* touch_addr = (char*)Atomic::add_ptr((intptr_t)actual_chunk_size, (volatile void*) &_cur_addr) - actual_chunk_size; |
254 char* touch_addr = Atomic::add(actual_chunk_size, &_cur_addr) - actual_chunk_size; |
255 if (touch_addr < _start_addr || touch_addr >= _end_addr) { |
255 if (touch_addr < _start_addr || touch_addr >= _end_addr) { |
256 break; |
256 break; |
257 } |
257 } |
258 char* end_addr = touch_addr + MIN2(actual_chunk_size, pointer_delta(_end_addr, touch_addr, sizeof(char))); |
258 char* end_addr = touch_addr + MIN2(actual_chunk_size, pointer_delta(_end_addr, touch_addr, sizeof(char))); |
259 os::pretouch_memory(touch_addr, end_addr, _page_size); |
259 os::pretouch_memory(touch_addr, end_addr, _page_size); |