src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp

changeset 9806
758c07667682
parent 7994
04ff2f6cd0eb
parent 9787
9f28a4cac6d9
     1.1 --- a/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp	Tue Feb 04 17:38:01 2020 +0800
     1.2 +++ b/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp	Tue Feb 04 18:13:14 2020 +0800
     1.3 @@ -52,11 +52,16 @@
     1.4    }
     1.5  }
     1.6  
     1.7 +static bool is_cause_full(GCCause::Cause cause) {
     1.8 +  return (cause != GCCause::_gc_locker) && (cause != GCCause::_wb_young_gc)
     1.9 +         DEBUG_ONLY(&& (cause != GCCause::_scavenge_alot));
    1.10 +}
    1.11 +
    1.12  // Only used for System.gc() calls
    1.13  VM_ParallelGCSystemGC::VM_ParallelGCSystemGC(uint gc_count,
    1.14                                               uint full_gc_count,
    1.15                                               GCCause::Cause gc_cause) :
    1.16 -  VM_GC_Operation(gc_count, gc_cause, full_gc_count, true /* full */)
    1.17 +  VM_GC_Operation(gc_count, gc_cause, full_gc_count, is_cause_full(gc_cause))
    1.18  {
    1.19  }
    1.20  
    1.21 @@ -68,8 +73,7 @@
    1.22      "must be a ParallelScavengeHeap");
    1.23  
    1.24    GCCauseSetter gccs(heap, _gc_cause);
    1.25 -  if (_gc_cause == GCCause::_gc_locker || _gc_cause == GCCause::_wb_young_gc
    1.26 -      DEBUG_ONLY(|| _gc_cause == GCCause::_scavenge_alot)) {
    1.27 +  if (!_full) {
    1.28      // If (and only if) the scavenge fails, this will invoke a full gc.
    1.29      heap->invoke_scavenge();
    1.30    } else {

mercurial