< prev index next >

src/hotspot/share/gc/shared/cardTable.cpp

Print this page
rev 58060 : [mq]: 8238999-iklam-review

@@ -49,34 +49,23 @@
   _page_size(os::vm_page_size()),
   _byte_map_size(0),
   _byte_map(NULL),
   _byte_map_base(NULL),
   _cur_covered_regions(0),
-  _covered(NULL),
-  _committed(NULL),
+  _covered(MemRegion::create(_max_covered_regions, mtGC)),
+  _committed(MemRegion::create(_max_covered_regions, mtGC)),
   _guard_region()
 {
   assert((uintptr_t(_whole_heap.start())  & (card_size - 1))  == 0, "heap must start at card boundary");
   assert((uintptr_t(_whole_heap.end()) & (card_size - 1))  == 0, "heap must end at card boundary");
 
   assert(card_size <= 512, "card_size must be less than 512"); // why?
-
-  _covered = new MemRegion[_max_covered_regions];
-  if (_covered == NULL) {
-    vm_exit_during_initialization("Could not allocate card table covered region set.");
-  }
 }
 
 CardTable::~CardTable() {
-  if (_covered) {
-    delete[] _covered;
-    _covered = NULL;
-  }
-  if (_committed) {
-    delete[] _committed;
-    _committed = NULL;
-  }
+  FREE_C_HEAP_ARRAY(MemRegion, _covered);
+  FREE_C_HEAP_ARRAY(MemRegion, _committed);
 }
 
 void CardTable::initialize() {
   _guard_index = cards_required(_whole_heap.word_size()) - 1;
   _last_valid_index = _guard_index - 1;

@@ -85,14 +74,10 @@
 
   HeapWord* low_bound  = _whole_heap.start();
   HeapWord* high_bound = _whole_heap.end();
 
   _cur_covered_regions = 0;
-  _committed = new MemRegion[_max_covered_regions];
-  if (_committed == NULL) {
-    vm_exit_during_initialization("Could not allocate card table committed region set.");
-  }
 
   const size_t rs_align = _page_size == (size_t) os::vm_page_size() ? 0 :
     MAX2(_page_size, (size_t) os::vm_allocation_granularity());
   ReservedSpace heap_rs(_byte_map_size, rs_align, false);
 
< prev index next >