comparison src/share/vm/runtime/virtualspace.cpp @ 22977:33e421924c67

8058354: SPECjvm2008-Derby -2.7% performance regression on Solaris-X64 starting with 9-b29 Summary: Allow use of large pages for auxiliary data structures in G1. Clean up existing interfaces. Reviewed-by: jmasa, pliden, stefank
author tschatzl
date Tue, 07 Apr 2015 10:53:51 +0200
parents 5788dbd1f2d6
children 30e04eba9e29
comparison
equal deleted inserted replaced
22976:5788dbd1f2d6 22977:33e421924c67
50 // Dummy constructor 50 // Dummy constructor
51 ReservedSpace::ReservedSpace() : _base(NULL), _size(0), _noaccess_prefix(0), 51 ReservedSpace::ReservedSpace() : _base(NULL), _size(0), _noaccess_prefix(0),
52 _alignment(0), _special(false), _executable(false) { 52 _alignment(0), _special(false), _executable(false) {
53 } 53 }
54 54
55 ReservedSpace::ReservedSpace(size_t size) { 55 ReservedSpace::ReservedSpace(size_t size, bool prefer_large_pages) {
56 // Want to use large pages where possible and pad with small pages. 56 // Want to use large pages where possible and pad with small pages.
57 size_t page_size = os::page_size_for_region_unaligned(size, 1); 57 size_t page_size = os::page_size_for_region_unaligned(size, 1);
58 bool large_pages = page_size != (size_t)os::vm_page_size(); 58 bool large_pages = page_size != (size_t)os::vm_page_size();
59 // Don't force the alignment to be large page aligned, 59 size_t alignment;
60 // since that will waste memory. 60 if (large_pages && prefer_large_pages) {
61 size_t alignment = os::vm_allocation_granularity(); 61 alignment = MAX2(page_size, (size_t)os::vm_allocation_granularity());
62 // ReservedSpace initialization requires size to be aligned to the given
63 // alignment. Align the size up.
64 size = align_size_up(size, alignment);
65 } else {
66 // Don't force the alignment to be large page aligned,
67 // since that will waste memory.
68 alignment = os::vm_allocation_granularity();
69 }
62 initialize(size, alignment, large_pages, NULL, 0, false); 70 initialize(size, alignment, large_pages, NULL, 0, false);
63 } 71 }
64 72
65 ReservedSpace::ReservedSpace(size_t size, size_t alignment, 73 ReservedSpace::ReservedSpace(size_t size, size_t alignment,
66 bool large, 74 bool large,