java-1.8.0-openjdk/java-1.8.0-openjdk-size_t.patch

292 lines
18 KiB
Diff
Raw Normal View History

diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp 2014-05-16 13:09:21.350132543 -0400
@@ -2660,7 +2660,7 @@ void CFLS_LAB::get_from_global_pool(size
2013-03-12 13:35:26 +00:00
if (ResizeOldPLAB && CMSOldPLABResizeQuicker) {
size_t multiple = _num_blocks[word_sz]/(CMSOldPLABToleranceFactor*CMSOldPLABNumRefills*n_blks);
n_blks += CMSOldPLABReactivityFactor*multiple*n_blks;
- n_blks = MIN2(n_blks, CMSOldPLABMax);
+ n_blks = MIN2(n_blks, (size_t)CMSOldPLABMax);
}
assert(n_blks > 0, "Error");
_cfls->par_get_chunk_of_blocks(word_sz, n_blks, fl);
2013-05-03 15:30:33 +00:00
diff -up jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp 2014-05-16 13:09:21.350132543 -0400
@@ -949,7 +949,7 @@ void ConcurrentMarkSweepGeneration::comp
2013-05-03 15:30:33 +00:00
if (free_percentage < desired_free_percentage) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
assert(desired_capacity >= capacity(), "invalid expansion size");
- size_t expand_bytes = MAX2(desired_capacity - capacity(), MinHeapDeltaBytes);
+ size_t expand_bytes = MAX2(desired_capacity - capacity(), (size_t)MinHeapDeltaBytes);
if (PrintGCDetails && Verbose) {
size_t desired_capacity = (size_t)(used() / ((double) 1 - desired_free_percentage));
gclog_or_tty->print_cr("\nFrom compute_new_size: ");
2014-05-21 13:40:27 +00:00
@@ -6555,7 +6555,7 @@ void CMSCollector::reset(bool asynch) {
2013-05-03 15:30:33 +00:00
HeapWord* curAddr = _markBitMap.startWord();
while (curAddr < _markBitMap.endWord()) {
size_t remaining = pointer_delta(_markBitMap.endWord(), curAddr);
- MemRegion chunk(curAddr, MIN2(CMSBitMapYieldQuantum, remaining));
+ MemRegion chunk(curAddr, MIN2((size_t)CMSBitMapYieldQuantum, remaining));
_markBitMap.clear_large_range(chunk);
if (ConcurrentMarkSweepThread::should_yield() &&
!foregroundGCIsActive() &&
2014-05-21 13:40:27 +00:00
@@ -6854,7 +6854,7 @@ void CMSMarkStack::expand() {
2013-05-03 15:30:33 +00:00
return;
}
// Double capacity if possible
- size_t new_capacity = MIN2(_capacity*2, MarkStackSizeMax);
+ size_t new_capacity = MIN2(_capacity*2, (size_t)MarkStackSizeMax);
// Do not give up existing stack until we have managed to
// get the double capacity that we desired.
ReservedSpace rs(ReservedSpace::allocation_align_size_up(
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp 2014-05-16 13:09:21.350132543 -0400
@@ -3745,7 +3745,7 @@ void CMTask::drain_local_queue(bool part
2013-03-12 13:35:26 +00:00
// of things to do) or totally (at the very end).
size_t target_size;
if (partially) {
- target_size = MIN2((size_t)_task_queue->max_elems()/3, GCDrainStackTargetSize);
+ target_size = MIN2((size_t)(_task_queue->max_elems()/3), (size_t) GCDrainStackTargetSize);
} else {
target_size = 0;
}
2014-05-21 13:40:27 +00:00
@@ -4583,7 +4583,7 @@ size_t G1PrintRegionLivenessInfoClosure:
2013-03-12 13:35:26 +00:00
// The > 0 check is to deal with the prev and next live bytes which
// could be 0.
if (*hum_bytes > 0) {
- bytes = MIN2(HeapRegion::GrainBytes, *hum_bytes);
+ bytes = MIN2(HeapRegion::GrainBytes, (size_t)*hum_bytes);
*hum_bytes -= bytes;
}
return bytes;
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2014-05-16 13:09:21.360132543 -0400
@@ -1742,7 +1742,7 @@ HeapWord* G1CollectedHeap::expand_and_al
2013-03-12 13:35:26 +00:00
verify_region_sets_optional();
- size_t expand_bytes = MAX2(word_size * HeapWordSize, MinHeapDeltaBytes);
+ size_t expand_bytes = MAX2(word_size * HeapWordSize, (size_t)MinHeapDeltaBytes);
ergo_verbose1(ErgoHeapSizing,
"attempt heap expansion",
ergo_format_reason("allocation request failed")
2014-05-21 13:40:27 +00:00
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp.size_t 2014-05-16 13:35:15.150132543 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp 2014-05-16 13:35:48.090132543 -0400
@@ -158,7 +158,7 @@ void HeapRegion::setup_heap_region_size(
if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
region_size = MAX2(average_heap_size / TARGET_REGION_NUMBER,
- (uintx) MIN_REGION_SIZE);
+ (size_t) MIN_REGION_SIZE);
}
int region_size_log = log2_long((jlong) region_size);
diff -up jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp 2014-05-16 13:09:21.360132543 -0400
@@ -845,7 +845,7 @@ OtherRegionsTable::do_cleanup_work(HRRSC
2013-03-12 13:35:26 +00:00
// This can be done by either mutator threads together with the
// concurrent refinement threads or GC threads.
int HeapRegionRemSet::num_par_rem_sets() {
- return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), ParallelGCThreads);
+ return (int)MAX2(DirtyCardQueueSet::num_par_ids() + ConcurrentG1Refine::thread_num(), (size_t)ParallelGCThreads);
}
HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp 2014-05-16 13:09:21.360132543 -0400
@@ -68,7 +68,7 @@ ParMarkBitMap::initialize(MemRegion cove
if (_virtual_space != NULL && _virtual_space->expand_by(_reserved_byte_size)) {
2013-03-12 13:35:26 +00:00
_region_start = covered_region.start();
_region_size = covered_region.word_size();
- idx_t* map = (idx_t*)_virtual_space->reserved_low_addr();
+ BitMap::bm_word_t* map = (BitMap::bm_word_t*)_virtual_space->reserved_low_addr();
_beg_bits.set_map(map);
_beg_bits.set_size(bits / 2);
_end_bits.set_map(map + words / 2);
2013-05-03 15:30:33 +00:00
diff -up jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp 2014-05-16 13:09:21.360132543 -0400
@@ -909,8 +909,8 @@ void PSParallelCompact::initialize_space
2013-05-03 15:30:33 +00:00
void PSParallelCompact::initialize_dead_wood_limiter()
{
const size_t max = 100;
- _dwl_mean = double(MIN2(ParallelOldDeadWoodLimiterMean, max)) / 100.0;
- _dwl_std_dev = double(MIN2(ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
+ _dwl_mean = double(MIN2((size_t)ParallelOldDeadWoodLimiterMean, max)) / 100.0;
+ _dwl_std_dev = double(MIN2((size_t)ParallelOldDeadWoodLimiterStdDev, max)) / 100.0;
_dwl_first_term = 1.0 / (sqrt(2.0 * M_PI) * _dwl_std_dev);
DEBUG_ONLY(_dwl_initialized = true;)
_dwl_adjustment = normal_distribution(1.0);
diff -up jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp 2014-05-16 13:09:21.360132543 -0400
@@ -192,7 +192,7 @@ bool ParScanThreadState::take_from_overf
const size_t num_overflow_elems = of_stack->size();
const size_t space_available = queue->max_elems() - queue->size();
const size_t num_take_elems = MIN3(space_available / 4,
- ParGCDesiredObjsFromOverflowList,
+ (size_t)ParGCDesiredObjsFromOverflowList,
num_overflow_elems);
// Transfer the most recent num_take_elems from the overflow
// stack to our work queue.
diff -up jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/memory/collectorPolicy.cpp 2014-05-16 13:31:55.620132543 -0400
@@ -386,7 +386,7 @@ void TwoGenerationCollectorPolicy::initi
uintx calculated_size = NewSize + OldSize;
double shrink_factor = (double) MaxHeapSize / calculated_size;
uintx smaller_new_size = align_size_down((uintx)(NewSize * shrink_factor), _gen_alignment);
- FLAG_SET_ERGO(uintx, NewSize, MAX2(young_gen_size_lower_bound(), smaller_new_size));
+ FLAG_SET_ERGO(uintx, NewSize, MAX2(young_gen_size_lower_bound(), (size_t)smaller_new_size));
_initial_gen0_size = NewSize;
// OldSize is already aligned because above we aligned MaxHeapSize to
@@ -434,7 +434,7 @@ void GenCollectorPolicy::initialize_size
2013-05-03 15:30:33 +00:00
// yield a size that is too small) and bound it by MaxNewSize above.
// Ergonomics plays here by previously calculating the desired
// NewSize and MaxNewSize.
- max_new_size = MIN2(MAX2(max_new_size, NewSize), MaxNewSize);
+ max_new_size = MIN2(MAX2(max_new_size, (size_t)NewSize), (size_t)MaxNewSize);
}
assert(max_new_size > 0, "All paths should set max_new_size");
2014-05-21 13:40:27 +00:00
@@ -461,16 +461,16 @@ void GenCollectorPolicy::initialize_size
2013-03-12 13:35:26 +00:00
// generally small compared to the NewRatio calculation.
_min_gen0_size = NewSize;
desired_new_size = NewSize;
- max_new_size = MAX2(max_new_size, NewSize);
+ max_new_size = MAX2(max_new_size, (size_t)NewSize);
} else {
// For the case where NewSize is the default, use NewRatio
// to size the minimum and initial generation sizes.
2014-05-21 13:40:27 +00:00
// Use the default NewSize as the floor for these values. If
2013-03-12 13:35:26 +00:00
// NewRatio is overly large, the resulting sizes can be too
// small.
2014-05-21 13:40:27 +00:00
- _min_gen0_size = MAX2(scale_by_NewRatio_aligned(_min_heap_byte_size), NewSize);
+ _min_gen0_size = MAX2(scale_by_NewRatio_aligned(_min_heap_byte_size), (size_t)NewSize);
2013-03-12 13:35:26 +00:00
desired_new_size =
2014-05-21 13:40:27 +00:00
- MAX2(scale_by_NewRatio_aligned(_initial_heap_byte_size), NewSize);
+ MAX2(scale_by_NewRatio_aligned(_initial_heap_byte_size), (size_t)NewSize);
2013-03-12 13:35:26 +00:00
}
assert(_min_gen0_size > 0, "Sanity check");
2014-05-21 13:40:27 +00:00
@@ -572,7 +572,7 @@ void TwoGenerationCollectorPolicy::initi
2013-03-12 13:35:26 +00:00
} else {
2014-05-21 13:40:27 +00:00
// It's been explicitly set on the command line. Use the
// OldSize and then determine the consequences.
- _min_gen1_size = MIN2(OldSize, _min_heap_byte_size - _min_gen0_size);
+ _min_gen1_size = MIN2((size_t)OldSize, _min_heap_byte_size - _min_gen0_size);
_initial_gen1_size = OldSize;
// If the user has explicitly set an OldSize that is inconsistent
2013-05-03 15:30:33 +00:00
diff -up jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t jdk8/hotspot/src/share/vm/memory/metaspace.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/memory/metaspace.cpp.size_t 2014-05-16 13:40:21.870132543 -0400
+++ jdk8/hotspot/src/share/vm/memory/metaspace.cpp 2014-05-16 13:44:26.930132543 -0400
@@ -1424,7 +1424,7 @@ void MetaspaceGC::compute_new_size() {
2013-05-03 15:30:33 +00:00
(size_t)MIN2(min_tmp, double(max_uintx));
// Don't shrink less than the initial generation size
minimum_desired_capacity = MAX2(minimum_desired_capacity,
- MetaspaceSize);
+ (size_t)MetaspaceSize);
if (PrintGCDetails && Verbose) {
2014-05-21 13:40:27 +00:00
gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: ");
@@ -1477,7 +1477,7 @@ void MetaspaceGC::compute_new_size() {
2013-05-03 15:30:33 +00:00
const double max_tmp = used_after_gc / minimum_used_percentage;
size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx));
maximum_desired_capacity = MAX2(maximum_desired_capacity,
- MetaspaceSize);
+ (size_t)MetaspaceSize);
2014-05-21 13:40:27 +00:00
if (PrintGCDetails && Verbose) {
2013-05-03 15:30:33 +00:00
gclog_or_tty->print_cr(" "
" maximum_free_percentage: %6.2f"
2014-05-21 13:40:27 +00:00
@@ -3110,7 +3110,7 @@ void Metaspace::global_initialize() {
2013-05-03 15:30:33 +00:00
// on the medium chunk list. The next chunk will be small and progress
// from there. This size calculated by -version.
_first_class_chunk_word_size = MIN2((size_t)MediumChunk*6,
2014-05-21 13:40:27 +00:00
- (CompressedClassSpaceSize/BytesPerWord)*2);
+ (size_t)(CompressedClassSpaceSize/BytesPerWord)*2);
2013-05-03 15:30:33 +00:00
_first_class_chunk_word_size = align_word_size_up(_first_class_chunk_word_size);
// Arbitrarily set the initial virtual space to a multiple
// of the boot class loader size.
diff -up jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/memory/threadLocalAllocBuffer.cpp 2014-05-16 13:09:21.360132543 -0400
2013-05-03 15:30:33 +00:00
@@ -232,7 +232,7 @@ size_t ThreadLocalAllocBuffer::initial_d
size_t init_sz;
if (TLABSize > 0) {
- init_sz = MIN2(TLABSize / HeapWordSize, max_size());
+ init_sz = MIN2((size_t)(TLABSize / HeapWordSize), max_size());
} else if (global_stats() == NULL) {
// Startup issue - main thread initialized before heap initialized.
init_sz = min_size();
diff -up jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/oops/objArrayKlass.inline.hpp 2014-05-16 13:09:21.360132543 -0400
@@ -48,7 +48,7 @@ void ObjArrayKlass::objarray_follow_cont
2013-03-12 13:35:26 +00:00
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
- const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
+ const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride);
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
@@ -82,7 +82,7 @@ void ObjArrayKlass::objarray_follow_cont
2013-03-12 13:35:26 +00:00
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
- const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
+ const size_t stride = MIN2(len - beg_index, (size_t)ObjArrayMarkingStride);
const size_t end_index = beg_index + stride;
T* const base = (T*)a->base();
T* const beg = base + beg_index;
diff -up jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t jdk8/hotspot/src/share/vm/runtime/arguments.cpp
2014-05-21 13:40:27 +00:00
--- jdk8/hotspot/src/share/vm/runtime/arguments.cpp.size_t 2014-03-11 16:02:13.000000000 -0400
+++ jdk8/hotspot/src/share/vm/runtime/arguments.cpp 2014-05-16 13:26:32.310132543 -0400
@@ -1240,7 +1240,7 @@ void Arguments::set_cms_and_parnew_gc_fl
2013-05-03 15:30:33 +00:00
// NewSize was set on the command line and it is larger than
// preferred_max_new_size.
if (!FLAG_IS_DEFAULT(NewSize)) { // NewSize explicitly set at command-line
- FLAG_SET_ERGO(uintx, MaxNewSize, MAX2(NewSize, preferred_max_new_size));
+ FLAG_SET_ERGO(uintx, MaxNewSize, MAX2((size_t)NewSize, preferred_max_new_size));
} else {
FLAG_SET_ERGO(uintx, MaxNewSize, preferred_max_new_size);
}
2014-05-21 13:40:27 +00:00
@@ -1265,8 +1265,8 @@ void Arguments::set_cms_and_parnew_gc_fl
2013-05-03 15:30:33 +00:00
// Unless explicitly requested otherwise, make young gen
// at least min_new, and at most preferred_max_new_size.
if (FLAG_IS_DEFAULT(NewSize)) {
- FLAG_SET_ERGO(uintx, NewSize, MAX2(NewSize, min_new));
- FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, NewSize));
+ FLAG_SET_ERGO(uintx, NewSize, MAX2((size_t)NewSize, min_new));
+ FLAG_SET_ERGO(uintx, NewSize, MIN2(preferred_max_new_size, (size_t)NewSize));
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set NewSize: " SIZE_FORMAT, NewSize);
2014-05-21 13:40:27 +00:00
@@ -1276,7 +1276,7 @@ void Arguments::set_cms_and_parnew_gc_fl
2013-03-12 13:35:26 +00:00
// so it's NewRatio x of NewSize.
if (FLAG_IS_DEFAULT(OldSize)) {
if (max_heap > NewSize) {
- FLAG_SET_ERGO(uintx, OldSize, MIN2(NewRatio*NewSize, max_heap - NewSize));
+ FLAG_SET_ERGO(uintx, OldSize, MIN2((size_t)(NewRatio*NewSize), max_heap - NewSize));
if (PrintGCDetails && Verbose) {
// Too early to use gclog_or_tty
tty->print_cr("CMS ergo set OldSize: " SIZE_FORMAT, OldSize);
2014-05-21 13:40:27 +00:00
@@ -1397,7 +1397,7 @@ bool verify_object_alignment() {
return true;
}
-uintx Arguments::max_heap_for_compressed_oops() {
+size_t Arguments::max_heap_for_compressed_oops() {
// Avoid sign flip.
assert(OopEncodingHeapMax > (uint64_t)os::vm_page_size(), "Unusual page size");
// We need to fit both the NULL page and the heap into the memory budget, while