< prev index next >

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

Print this page
rev 14453 : Remove secondary marking bitmap.

@@ -57,14 +57,12 @@
     ShenandoahHeapRegion *r = _heap->heap_region_containing(obj);
     stringStream ss;
     r->print_on(&ss);
 
     msg.append("  " PTR_FORMAT " - klass " PTR_FORMAT " %s\n", p2i(obj), p2i(obj->klass()), obj->klass()->external_name());
-    msg.append("    %3s allocated after complete mark start\n", _heap->allocated_after_complete_mark_start((HeapWord *) obj) ? "" : "not");
-    msg.append("    %3s allocated after next mark start\n",     _heap->allocated_after_next_mark_start((HeapWord *) obj)     ? "" : "not");
-    msg.append("    %3s marked complete\n",      _heap->is_marked_complete(obj) ? "" : "not");
-    msg.append("    %3s marked next\n",          _heap->is_marked_next(obj) ? "" : "not");
+    msg.append("    %3s allocated after mark start\n", _heap->allocated_after_mark_start((HeapWord *) obj) ? "" : "not");
+    msg.append("    %3s marked\n",            _heap->is_marked(obj) ? "" : "not");
     msg.append("    %3s in collection set\n",    _heap->in_collection_set(obj) ? "" : "not");
     msg.append("  region: %s", ss.as_string());
   }
 
   void print_non_obj(ShenandoahMessageBuffer& msg, void* loc) {

@@ -304,17 +302,13 @@
 
     switch (_options._verify_marked) {
       case ShenandoahVerifier::_verify_marked_disable:
         // skip
         break;
-      case ShenandoahVerifier::_verify_marked_next:
-        verify(_safe_all, obj, _heap->is_marked_next(obj),
-               "Must be marked in next bitmap");
-        break;
-      case ShenandoahVerifier::_verify_marked_complete:
-        verify(_safe_all, obj, _heap->is_marked_complete(obj),
-               "Must be marked in complete bitmap");
+      case ShenandoahVerifier::_verify_marked:
+        verify(_safe_all, obj, _heap->is_marked(obj),
+               "Must be marked");
         break;
       default:
         assert(false, "Unhandled mark verification");
     }
 

@@ -486,15 +480,15 @@
     }
 
     verify(r, r->capacity() == ShenandoahHeapRegion::region_size_bytes(),
            "Capacity should match region size");
 
-    verify(r, r->bottom() <= _heap->complete_top_at_mark_start(r->bottom()),
+    verify(r, r->bottom() <= _heap->top_at_mark_start(r->bottom()),
            "Region top should not be less than bottom");
 
-    verify(r, _heap->complete_top_at_mark_start(r->bottom()) <= r->top(),
-           "Complete TAMS should not be larger than top");
+    verify(r, _heap->top_at_mark_start(r->bottom()) <= r->top(),
+           "TAMS should not be larger than top");
 
     verify(r, r->get_live_data_bytes() <= r->capacity(),
            "Live data cannot be larger than capacity");
 
     verify(r, r->garbage() <= r->capacity(),

@@ -637,20 +631,20 @@
   }
 
   virtual void work_humongous(ShenandoahHeapRegion *r, ShenandoahVerifierStack& stack, ShenandoahVerifyOopClosure& cl) {
     size_t processed = 0;
     HeapWord* obj = r->bottom() + BrooksPointer::word_size();
-    if (_heap->is_marked_complete((oop)obj)) {
+    if (_heap->is_marked((oop)obj)) {
       verify_and_follow(obj, stack, cl, &processed);
     }
     Atomic::add(processed, &_processed);
   }
 
   virtual void work_regular(ShenandoahHeapRegion *r, ShenandoahVerifierStack &stack, ShenandoahVerifyOopClosure &cl) {
     size_t processed = 0;
-    MarkBitMap* mark_bit_map = _heap->complete_mark_bit_map();
-    HeapWord* tams = _heap->complete_top_at_mark_start(r->bottom());
+    MarkBitMap* mark_bit_map = _heap->mark_bit_map();
+    HeapWord* tams = _heap->top_at_mark_start(r->bottom());
 
     // Bitmaps, before TAMS
     if (tams > r->bottom()) {
       HeapWord* start = r->bottom() + BrooksPointer::word_size();
       HeapWord* addr = mark_bit_map->getNextMarkedWordAddress(start, tams);

@@ -734,11 +728,11 @@
             /* skip_cset = */ false,
             /* skip_humongous_cont = */ false);
   }
 
   OrderAccess::fence();
-  _heap->ensure_parsability(false);
+  _heap->make_tlabs_parsable(false);
 
   // Allocate temporary bitmap for storing marking wavefront:
   MemRegion mr = MemRegion(_verification_bit_map->startWord(), _verification_bit_map->endWord());
   _verification_bit_map->clear_range_large(mr);
 

@@ -766,22 +760,22 @@
   // before TAMS, we verify the bitmaps, if available; after TAMS, we walk until the top(). It mimics
   // what marked_object_iterate is doing, without calling into that optimized (and possibly incorrect)
   // version
 
   size_t count_marked = 0;
-  if (ShenandoahVerifyLevel >= 4 && marked == _verify_marked_complete) {
+  if (ShenandoahVerifyLevel >= 4 && marked == _verify_marked) {
     ShenandoahVerifierMarkedRegionTask task(_heap->regions(), _verification_bit_map, ld, label, options);
     _heap->workers()->run_task(&task);
     count_marked = task.processed();
   } else {
-    guarantee(ShenandoahVerifyLevel < 4 || marked == _verify_marked_next || marked == _verify_marked_disable, "Should be");
+    guarantee(ShenandoahVerifyLevel < 4 || marked == _verify_marked_disable, "Should be");
   }
 
   // Step 4. Verify accumulated liveness data, if needed. Only reliable if verification level includes
   // marked objects.
 
-  if (ShenandoahVerifyLevel >= 4 && marked == _verify_marked_complete && liveness == _verify_liveness_complete) {
+  if (ShenandoahVerifyLevel >= 4 && marked == _verify_marked && liveness == _verify_liveness_complete) {
     ShenandoahHeapRegionSet* set = _heap->regions();
     for (size_t i = 0; i < _heap->num_regions(); i++) {
       ShenandoahHeapRegion* r = set->get(i);
 
       juint verf_live = 0;

@@ -851,11 +845,11 @@
 
 void ShenandoahVerifier::verify_after_concmark() {
   verify_at_safepoint(
           "After Mark",
           _verify_forwarded_none,      // no forwarded references
-          _verify_marked_complete,     // bitmaps as precise as we can get
+          _verify_marked,              // bitmaps as precise as we can get
           _verify_matrix_disable,      // matrix might be foobared
           _verify_cset_none,           // no references to cset anymore
           _verify_liveness_complete,   // liveness data must be complete here
           _verify_regions_disable      // trash regions not yet recycled
   );

@@ -865,11 +859,11 @@
   // Evacuation is always preceded by mark, but we want to have a sanity check after
   // selecting the collection set, and (immediate) regions recycling
   verify_at_safepoint(
           "Before Evacuation",
           _verify_forwarded_none,    // no forwarded references
-          _verify_marked_complete,   // walk over marked objects too
+          _verify_marked,            // walk over marked objects too
           _verify_matrix_disable,    // skip, verified after mark
           _verify_cset_disable,      // skip, verified after mark
           _verify_liveness_disable,  // skip, verified after mark
           _verify_regions_disable    // trash regions not yet recycled
   );

@@ -877,11 +871,11 @@
 
 void ShenandoahVerifier::verify_after_evacuation() {
   verify_at_safepoint(
           "After Evacuation",
           _verify_forwarded_allow,     // objects are still forwarded
-          _verify_marked_complete,     // bitmaps might be stale, but alloc-after-mark should be well
+          _verify_marked,              // bitmaps might be stale, but alloc-after-mark should be well
           _verify_matrix_disable,      // matrix is inconsistent here
           _verify_cset_forwarded,      // all cset refs are fully forwarded
           _verify_liveness_disable,    // no reliable liveness data anymore
           _verify_regions_notrash      // trash regions have been recycled already
   );

@@ -889,11 +883,11 @@
 
 void ShenandoahVerifier::verify_before_updaterefs() {
   verify_at_safepoint(
           "Before Updating References",
           _verify_forwarded_allow,     // forwarded references allowed
-          _verify_marked_complete,     // bitmaps might be stale, but alloc-after-mark should be well
+          _verify_marked,              // bitmaps might be stale, but alloc-after-mark should be well
           _verify_matrix_disable,      // matrix is inconsistent here
           _verify_cset_forwarded,      // all cset refs are fully forwarded
           _verify_liveness_disable,    // no reliable liveness data anymore
           _verify_regions_notrash      // trash regions have been recycled already
   );

@@ -901,11 +895,11 @@
 
 void ShenandoahVerifier::verify_after_updaterefs() {
   verify_at_safepoint(
           "After Updating References",
           _verify_forwarded_none,      // no forwarded references
-          _verify_marked_complete,     // bitmaps might be stale, but alloc-after-mark should be well
+          _verify_marked,              // bitmaps might be stale, but alloc-after-mark should be well
           _verify_matrix_conservative, // matrix is conservatively consistent
           _verify_cset_none,           // no cset references, all updated
           _verify_liveness_disable,    // no reliable liveness data anymore
           _verify_regions_nocset       // no cset regions, trash regions have appeared
   );

@@ -913,11 +907,11 @@
 
 void ShenandoahVerifier::verify_before_partial() {
   verify_at_safepoint(
           "Before Partial GC",
           _verify_forwarded_none,      // cannot have forwarded objects
-          _verify_marked_complete,     // bitmaps might be stale, but alloc-after-mark should be well
+          _verify_marked,              // bitmaps might be stale, but alloc-after-mark should be well
           _verify_matrix_conservative, // matrix is conservatively consistent
           _verify_cset_none,           // no cset references before partial
           _verify_liveness_disable,    // no reliable liveness data anymore
           _verify_regions_notrash_nocset // no trash and no cset regions
   );

@@ -925,11 +919,11 @@
 
 void ShenandoahVerifier::verify_after_partial() {
   verify_at_safepoint(
           "After Partial GC",
           _verify_forwarded_none,      // cannot have forwarded objects
-          _verify_marked_complete,     // bitmaps might be stale, but alloc-after-mark should be well
+          _verify_marked,              // bitmaps might be stale, but alloc-after-mark should be well
           _verify_matrix_conservative, // matrix is conservatively consistent
           _verify_cset_none,           // no cset references left after partial
           _verify_liveness_disable,    // no reliable liveness data anymore
           _verify_regions_nocset       // no cset regions, trash regions allowed
   );

@@ -949,11 +943,11 @@
 
 void ShenandoahVerifier::verify_after_fullgc() {
   verify_at_safepoint(
           "After Full GC",
           _verify_forwarded_none,      // all objects are non-forwarded
-          _verify_marked_complete,     // all objects are marked in complete bitmap
+          _verify_marked,              // all objects are marked
           _verify_matrix_conservative, // matrix is conservatively consistent
           _verify_cset_none,           // no cset references
           _verify_liveness_disable,    // no reliable liveness data anymore
           _verify_regions_notrash_nocset // no trash, no cset
   );
< prev index next >