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) {
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 // Don't force the alignment to be large page aligned,
45 // since that will waste memory.
46 size_t alignment = os::vm_allocation_granularity();
47 initialize(size, alignment, large_pages, NULL, false);
48 }
49
50 ReservedSpace::ReservedSpace(size_t size, size_t alignment,
51 bool large,
52 char* requested_address) {
53 initialize(size, alignment, large, requested_address, false);
54 }
55
56 ReservedSpace::ReservedSpace(size_t size, size_t alignment,
57 bool large,
58 bool executable) {
59 initialize(size, alignment, large, NULL, executable);
60 }
61
62 // Helper method.
63 static bool failed_to_reserve_as_requested(char* base, char* requested_address,
64 const size_t size, bool special)
65 {
66 if (base == requested_address || requested_address == NULL)
|
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,
66 bool executable) {
67 initialize(size, alignment, large, NULL, executable);
68 }
69
70 // Helper method.
71 static bool failed_to_reserve_as_requested(char* base, char* requested_address,
72 const size_t size, bool special)
73 {
74 if (base == requested_address || requested_address == NULL)
|