src/share/vm/gc/g1/g1ConcurrentMark.cpp

Print this page

        

@@ -412,11 +412,10 @@
   // _active_tasks set in set_non_marking_state
   // _tasks set inside the constructor
   _task_queues(new G1CMTaskQueueSet((int) _max_worker_id)),
   _terminator(ParallelTaskTerminator((int) _max_worker_id, _task_queues)),
 
-  _has_overflown(false),
   _concurrent(false),
   _has_aborted(false),
   _restart_for_overflow(false),
   _concurrent_marking_in_progress(false),
   _gc_timer_cm(new (ResourceObj::C_HEAP, mtGC) ConcurrentGCTimer()),

@@ -590,18 +589,13 @@
   // pause with initial mark piggy-backed
   set_concurrent_marking_in_progress();
 }
 
 
-void G1ConcurrentMark::reset_marking_state(bool clear_overflow) {
+void G1ConcurrentMark::reset_marking_state() {
   _global_mark_stack.set_should_expand(has_overflown());
   _global_mark_stack.set_empty();        // Also clears the overflow stack's overflow flag
-  if (clear_overflow) {
-    clear_has_overflown();
-  } else {
-    assert(has_overflown(), "pre-condition");
-  }
   _finger = _heap_start;
 
   for (uint i = 0; i < _max_worker_id; ++i) {
     G1CMTaskQueue* queue = _task_queues->queue(i);
     queue->set_empty();

@@ -881,11 +875,11 @@
       // task 0 is responsible for clearing the global data structures
       // We should be here because of an overflow. During STW we should
       // not clear the overflow flag since we rely on it being true when
       // we exit this method to abort the pause and restart concurrent
       // marking.
-      reset_marking_state(true /* clear_overflow */);
+      reset_marking_state();
 
       log_info(gc, marking)("Concurrent Mark reset for overflow");
     }
   }
 

@@ -1750,16 +1744,10 @@
     // global marking stack.
 
     assert(_global_mark_stack.is_out_of_memory() || _global_mark_stack.is_empty(),
             "Mark stack should be empty (unless it is out of memory)");
 
-    if (_global_mark_stack.is_out_of_memory()) {
-      // This should have been done already when we tried to push an
-      // entry on to the global mark stack. But let's do it again.
-      set_has_overflown();
-    }
-
     assert(rp->num_q() == active_workers, "why not");
 
     rp->enqueue_discovered_references(executor);
 
     rp->verify_no_references_recorded();

@@ -2929,11 +2917,10 @@
       // which one.
       guarantee(_cm->out_of_regions(), "only way to reach here");
       guarantee(_cm->mark_stack_empty(), "only way to reach here");
       guarantee(_task_queue->size() == 0, "only way to reach here");
       guarantee(!_cm->has_overflown(), "only way to reach here");
-      guarantee(!_cm->mark_stack_overflow(), "only way to reach here");
     } else {
       // Apparently there's more work to do. Let's abort this task. It
       // will restart it and we can hopefully find more things to do.
       set_has_aborted();
     }