20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "oops/markOop.hpp"
27 #include "oops/oop.inline.hpp"
28 #include "runtime/virtualspace.hpp"
29 #include "services/memTracker.hpp"
30
31 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
32
33 // ReservedSpace
34
35 // Dummy constructor
36 ReservedSpace::ReservedSpace() : _base(NULL), _size(0), _noaccess_prefix(0),
37 _alignment(0), _special(false), _executable(false) {
38 }
39
40 ReservedSpace::ReservedSpace(size_t size, bool prefer_large_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);
43 bool large_pages = page_size != (size_t)os::vm_page_size();
44 size_t alignment;
45 if (large_pages && prefer_large_pages) {
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 }
55 initialize(size, alignment, large_pages, NULL, false);
56 }
57
58 ReservedSpace::ReservedSpace(size_t size, size_t alignment,
59 bool large,
60 char* requested_address) {
61 initialize(size, alignment, large, requested_address, false);
62 }
63
64 ReservedSpace::ReservedSpace(size_t size, size_t alignment,
65 bool large,
|
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "oops/markOop.hpp"
27 #include "oops/oop.inline.hpp"
28 #include "runtime/virtualspace.hpp"
29 #include "services/memTracker.hpp"
30
31 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
32
33 // ReservedSpace
34
35 // Dummy constructor
36 ReservedSpace::ReservedSpace() : _base(NULL), _size(0), _noaccess_prefix(0),
37 _alignment(0), _special(false), _executable(false) {
38 }
39
40 ReservedSpace::ReservedSpace(size_t size, size_t preferred_page_size) {
41 bool has_preferred_page_size = preferred_page_size != 0;
42 // Want to use large pages where possible and pad with small pages.
43 size_t page_size = has_preferred_page_size ? preferred_page_size : os::page_size_for_region_unaligned(size, 1);
44 bool large_pages = page_size != (size_t)os::vm_page_size();
45 size_t alignment;
46 if (large_pages && has_preferred_page_size) {
47 alignment = MAX2(page_size, (size_t)os::vm_allocation_granularity());
48 // ReservedSpace initialization requires size to be aligned to the given
49 // alignment. Align the size up.
50 size = align_size_up(size, alignment);
51 } else {
52 // Don't force the alignment to be large page aligned,
53 // since that will waste memory.
54 alignment = os::vm_allocation_granularity();
55 }
56 initialize(size, alignment, large_pages, NULL, false);
57 }
58
59 ReservedSpace::ReservedSpace(size_t size, size_t alignment,
60 bool large,
61 char* requested_address) {
62 initialize(size, alignment, large, requested_address, false);
63 }
64
65 ReservedSpace::ReservedSpace(size_t size, size_t alignment,
66 bool large,
|