< prev index next >
src/share/vm/runtime/virtualspace.cpp
Print this page
rev 7555 : imported patch 8067469-g1-ignores-alwayspretouch
*** 613,635 ****
_upper_high += upper_needs;
}
}
if (pre_touch || AlwaysPreTouch) {
! int vm_ps = os::vm_page_size();
! for (char* curr = previous_high;
! curr < unaligned_new_high;
! curr += vm_ps) {
! // Note the use of a write here; originally we tried just a read, but
! // since the value read was unused, the optimizer removed the read.
! // If we ever have a concurrent touchahead thread, we'll want to use
! // a read, to avoid the potential of overwriting data (if a mutator
! // thread beats the touchahead thread to a page). There are various
! // ways of making sure this read is not optimized away: for example,
! // generating the code for a read procedure at runtime.
! *curr = 0;
! }
}
_high += bytes;
return true;
}
--- 613,623 ----
_upper_high += upper_needs;
}
}
if (pre_touch || AlwaysPreTouch) {
! os::pretouch_memory(previous_high, unaligned_new_high);
}
_high += bytes;
return true;
}
< prev index next >