< prev index next >

src/share/vm/gc/shenandoah/shenandoahConnectionMatrix.cpp

Print this page

        

@@ -34,48 +34,57 @@
   _region_shift(ShenandoahHeapRegion::region_size_shift()),
   _matrix(NEW_C_HEAP_ARRAY(char, max_regions * max_regions, mtGC)),
   _magic_offset( ((uintptr_t) _matrix) - ( ((uintptr_t) ShenandoahHeap::heap()->first_region_bottom()) >> _region_shift) * (_stride + 1))
 
 {
+  if (UseShenandoahMatrix) {
   clear_all();
+  }
 }
 
 ShenandoahConnectionMatrix::~ShenandoahConnectionMatrix() {
   FREE_C_HEAP_ARRAY(char, _matrix);
 }
 
 size_t ShenandoahConnectionMatrix::index_of(size_t from_idx, size_t to_idx) const {
+  assert (UseShenandoahMatrix, "call only when matrix is enabled");
   return from_idx * _stride + to_idx;
 }
 
 bool ShenandoahConnectionMatrix::is_connected(size_t from_idx, size_t to_idx) const {
+  assert (UseShenandoahMatrix, "call only when matrix is enabled");
   return _matrix[index_of(from_idx, to_idx)] > 0;
 }
 
 void ShenandoahConnectionMatrix::clear_connected(size_t from_idx, size_t to_idx) {
+  assert (UseShenandoahMatrix, "call only when matrix is enabled");
   _matrix[index_of(from_idx, to_idx)] = 0;
 }
 
 void ShenandoahConnectionMatrix::clear_region(size_t idx) {
+  assert (UseShenandoahMatrix, "call only when matrix is enabled");
   for (uint i = 0; i < _stride; i++) {
     clear_connected(i, idx);
     clear_connected(idx, i);
   }
 }
 
 void ShenandoahConnectionMatrix::clear_region_outbound(size_t idx) {
+  assert (UseShenandoahMatrix, "call only when matrix is enabled");
   for (uint i = 0; i < _stride; i++) {
     clear_connected(idx, i);
   }
 }
 
 void ShenandoahConnectionMatrix::clear_all() {
+  assert (UseShenandoahMatrix, "call only when matrix is enabled");
   size_t count = sizeof(char) * _stride * _stride;
   Copy::fill_to_bytes(_matrix, count, 0);
 }
 
 void ShenandoahConnectionMatrix::print_on(outputStream* st) const {
+  assert (UseShenandoahMatrix, "call only when matrix is enabled");
   st->print_cr("Connection Matrix:");
   st->print_cr("%8s, %10s, %10s, %10s, %8s, %s", "Region", "Live", "Used", "Garbage", "Refcnt", "Referenced by");
 
   ShenandoahHeap* heap = ShenandoahHeap::heap();
   size_t num_regions = heap->num_regions();
< prev index next >