src/hotspot/share/gc/g1/g1PageBasedVirtualSpace.cpp
changeset 47634 6a0c42c40cd1
parent 47216 71c04702a3d5
child 49030 1817d118ff66
equal deleted inserted replaced
47633:1c21c60f51bf 47634:6a0c42c40cd1
   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);