35 // Dummy constructor |
35 // Dummy constructor |
36 ReservedSpace::ReservedSpace() : _base(NULL), _size(0), _noaccess_prefix(0), |
36 ReservedSpace::ReservedSpace() : _base(NULL), _size(0), _noaccess_prefix(0), |
37 _alignment(0), _special(false), _executable(false) { |
37 _alignment(0), _special(false), _executable(false) { |
38 } |
38 } |
39 |
39 |
40 ReservedSpace::ReservedSpace(size_t size) { |
40 ReservedSpace::ReservedSpace(size_t size, bool prefer_large_pages) { |
41 // Want to use large pages where possible and pad with small pages. |
41 // Want to use large pages where possible and pad with small pages. |
42 size_t page_size = os::page_size_for_region_unaligned(size, 1); |
42 size_t page_size = os::page_size_for_region_unaligned(size, 1); |
43 bool large_pages = page_size != (size_t)os::vm_page_size(); |
43 bool large_pages = page_size != (size_t)os::vm_page_size(); |
44 // Don't force the alignment to be large page aligned, |
44 size_t alignment; |
45 // since that will waste memory. |
45 if (large_pages && prefer_large_pages) { |
46 size_t alignment = os::vm_allocation_granularity(); |
46 alignment = MAX2(page_size, (size_t)os::vm_allocation_granularity()); |
|
47 // ReservedSpace initialization requires size to be aligned to the given |
|
48 // alignment. Align the size up. |
|
49 size = align_size_up(size, alignment); |
|
50 } else { |
|
51 // Don't force the alignment to be large page aligned, |
|
52 // since that will waste memory. |
|
53 alignment = os::vm_allocation_granularity(); |
|
54 } |
47 initialize(size, alignment, large_pages, NULL, false); |
55 initialize(size, alignment, large_pages, NULL, false); |
48 } |
56 } |
49 |
57 |
50 ReservedSpace::ReservedSpace(size_t size, size_t alignment, |
58 ReservedSpace::ReservedSpace(size_t size, size_t alignment, |
51 bool large, |
59 bool large, |