hotspot/src/share/vm/gc/g1/g1PageBasedVirtualSpace.cpp
changeset 38177 b0c9cb06506b
parent 33105 294e48b4f704
child 40010 e32d5e545789
equal deleted inserted replaced
38175:4e2bff1a5467 38177:b0c9cb06506b
    73 
    73 
    74   _page_size = page_size;
    74   _page_size = page_size;
    75 
    75 
    76   vmassert(_committed.size() == 0, "virtual space initialized more than once");
    76   vmassert(_committed.size() == 0, "virtual space initialized more than once");
    77   BitMap::idx_t size_in_pages = rs.size() / page_size;
    77   BitMap::idx_t size_in_pages = rs.size() / page_size;
    78   _committed.resize(size_in_pages, /* in_resource_area */ false);
    78   _committed.initialize(size_in_pages);
    79   if (_special) {
    79   if (_special) {
    80     _dirty.resize(size_in_pages, /* in_resource_area */ false);
    80     _dirty.initialize(size_in_pages);
    81   }
    81   }
    82 
    82 
    83   _tail_size = used_size % _page_size;
    83   _tail_size = used_size % _page_size;
    84 }
    84 }
    85 
    85 
    86 G1PageBasedVirtualSpace::~G1PageBasedVirtualSpace() {
    86 G1PageBasedVirtualSpace::~G1PageBasedVirtualSpace() {
    87   release();
       
    88 }
       
    89 
       
    90 void G1PageBasedVirtualSpace::release() {
       
    91   // This does not release memory it never reserved.
    87   // This does not release memory it never reserved.
    92   // Caller must release via rs.release();
    88   // Caller must release via rs.release();
    93   _low_boundary           = NULL;
    89   _low_boundary           = NULL;
    94   _high_boundary          = NULL;
    90   _high_boundary          = NULL;
    95   _special                = false;
    91   _special                = false;
    96   _executable             = false;
    92   _executable             = false;
    97   _page_size              = 0;
    93   _page_size              = 0;
    98   _tail_size              = 0;
    94   _tail_size              = 0;
    99   _committed.resize(0, false);
       
   100   _dirty.resize(0, false);
       
   101 }
    95 }
   102 
    96 
   103 size_t G1PageBasedVirtualSpace::committed_size() const {
    97 size_t G1PageBasedVirtualSpace::committed_size() const {
   104   size_t result = _committed.count_one_bits() * _page_size;
    98   size_t result = _committed.count_one_bits() * _page_size;
   105   // The last page might not be in full.
    99   // The last page might not be in full.