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, bool prefer_large_pages) { |
55 ReservedSpace::ReservedSpace(size_t size, size_t preferred_page_size) { |
|
56 bool has_preferred_page_size = preferred_page_size != 0; |
56 // Want to use large pages where possible and pad with small pages. |
57 // 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); |
58 size_t page_size = has_preferred_page_size ? preferred_page_size : os::page_size_for_region_unaligned(size, 1); |
58 bool large_pages = page_size != (size_t)os::vm_page_size(); |
59 bool large_pages = page_size != (size_t)os::vm_page_size(); |
59 size_t alignment; |
60 size_t alignment; |
60 if (large_pages && prefer_large_pages) { |
61 if (large_pages && has_preferred_page_size) { |
61 alignment = MAX2(page_size, (size_t)os::vm_allocation_granularity()); |
62 alignment = MAX2(page_size, (size_t)os::vm_allocation_granularity()); |
62 // ReservedSpace initialization requires size to be aligned to the given |
63 // ReservedSpace initialization requires size to be aligned to the given |
63 // alignment. Align the size up. |
64 // alignment. Align the size up. |
64 size = align_size_up(size, alignment); |
65 size = align_size_up(size, alignment); |
65 } else { |
66 } else { |