< prev index next >

src/share/vm/runtime/virtualspace.cpp

Print this page
rev 7990 : imported patch 8058354-stefank-review


  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)


< prev index next >