1.1 --- a/src/share/vm/runtime/virtualspace.cpp Fri Aug 31 16:39:35 2012 -0700 1.2 +++ b/src/share/vm/runtime/virtualspace.cpp Sat Sep 01 13:25:18 2012 -0400 1.3 @@ -155,38 +155,27 @@ 1.4 return true; 1.5 } 1.6 1.7 -ReservedSpace::ReservedSpace(const size_t prefix_size, 1.8 - const size_t prefix_align, 1.9 - const size_t suffix_size, 1.10 +ReservedSpace::ReservedSpace(const size_t suffix_size, 1.11 const size_t suffix_align, 1.12 char* requested_address, 1.13 const size_t noaccess_prefix) 1.14 { 1.15 - assert(prefix_size != 0, "sanity"); 1.16 - assert(prefix_align != 0, "sanity"); 1.17 assert(suffix_size != 0, "sanity"); 1.18 assert(suffix_align != 0, "sanity"); 1.19 - assert((prefix_size & (prefix_align - 1)) == 0, 1.20 - "prefix_size not divisible by prefix_align"); 1.21 assert((suffix_size & (suffix_align - 1)) == 0, 1.22 "suffix_size not divisible by suffix_align"); 1.23 - assert((suffix_align & (prefix_align - 1)) == 0, 1.24 - "suffix_align not divisible by prefix_align"); 1.25 1.26 // Assert that if noaccess_prefix is used, it is the same as prefix_align. 1.27 - assert(noaccess_prefix == 0 || 1.28 - noaccess_prefix == prefix_align, "noaccess prefix wrong"); 1.29 - 1.30 - // Add in noaccess_prefix to prefix_size; 1.31 - const size_t adjusted_prefix_size = prefix_size + noaccess_prefix; 1.32 + // Add in noaccess_prefix to prefix 1.33 + const size_t adjusted_prefix_size = noaccess_prefix; 1.34 const size_t size = adjusted_prefix_size + suffix_size; 1.35 1.36 // On systems where the entire region has to be reserved and committed up 1.37 // front, the compound alignment normally done by this method is unnecessary. 1.38 const bool try_reserve_special = UseLargePages && 1.39 - prefix_align == os::large_page_size(); 1.40 + suffix_align == os::large_page_size(); 1.41 if (!os::can_commit_large_page_memory() && try_reserve_special) { 1.42 - initialize(size, prefix_align, true, requested_address, noaccess_prefix, 1.43 + initialize(size, suffix_align, true, requested_address, noaccess_prefix, 1.44 false); 1.45 return; 1.46 } 1.47 @@ -209,12 +198,11 @@ 1.48 addr = NULL; 1.49 } 1.50 } else { 1.51 - addr = os::reserve_memory(size, NULL, prefix_align); 1.52 + addr = os::reserve_memory(size, NULL, suffix_align); 1.53 } 1.54 if (addr == NULL) return; 1.55 1.56 - // Check whether the result has the needed alignment (unlikely unless 1.57 - // prefix_align < suffix_align). 1.58 + // Check whether the result has the needed alignment 1.59 const size_t ofs = (size_t(addr) + adjusted_prefix_size) & (suffix_align - 1); 1.60 if (ofs != 0) { 1.61 // Wrong alignment. Release, allocate more space and do manual alignment. 1.62 @@ -229,12 +217,12 @@ 1.63 } 1.64 1.65 const size_t extra = MAX2(ofs, suffix_align - ofs); 1.66 - addr = reserve_and_align(size + extra, adjusted_prefix_size, prefix_align, 1.67 + addr = reserve_and_align(size + extra, adjusted_prefix_size, suffix_align, 1.68 suffix_size, suffix_align); 1.69 if (addr == NULL) { 1.70 // Try an even larger region. If this fails, address space is exhausted. 1.71 addr = reserve_and_align(size + suffix_align, adjusted_prefix_size, 1.72 - prefix_align, suffix_size, suffix_align); 1.73 + suffix_align, suffix_size, suffix_align); 1.74 } 1.75 1.76 if (requested_address != 0 && 1.77 @@ -249,7 +237,7 @@ 1.78 1.79 _base = addr; 1.80 _size = size; 1.81 - _alignment = prefix_align; 1.82 + _alignment = suffix_align; 1.83 _noaccess_prefix = noaccess_prefix; 1.84 } 1.85 1.86 @@ -499,21 +487,18 @@ 1.87 protect_noaccess_prefix(size); 1.88 } 1.89 1.90 -ReservedHeapSpace::ReservedHeapSpace(const size_t prefix_size, 1.91 - const size_t prefix_align, 1.92 - const size_t suffix_size, 1.93 - const size_t suffix_align, 1.94 +ReservedHeapSpace::ReservedHeapSpace(const size_t heap_space_size, 1.95 + const size_t alignment, 1.96 char* requested_address) : 1.97 - ReservedSpace(prefix_size, prefix_align, suffix_size, suffix_align, 1.98 + ReservedSpace(heap_space_size, alignment, 1.99 requested_address, 1.100 (UseCompressedOops && (Universe::narrow_oop_base() != NULL) && 1.101 Universe::narrow_oop_use_implicit_null_checks()) ? 1.102 - lcm(os::vm_page_size(), prefix_align) : 0) { 1.103 + lcm(os::vm_page_size(), alignment) : 0) { 1.104 if (base() > 0) { 1.105 MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap); 1.106 } 1.107 - 1.108 - protect_noaccess_prefix(prefix_size+suffix_size); 1.109 + protect_noaccess_prefix(heap_space_size); 1.110 } 1.111 1.112 // Reserve space for code segment. Same as Java heap only we mark this as