src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp

changeset 10015
eb7ce841ccec
parent 9448
73d689add964
parent 9982
72053ed6f8d4
     1.1 --- a/src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp	Sat Oct 24 16:18:50 2020 +0800
     1.2 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.inline.hpp	Sat Oct 24 16:43:47 2020 +0800
     1.3 @@ -27,6 +27,7 @@
     1.4  
     1.5  #include "gc_implementation/g1/concurrentMark.hpp"
     1.6  #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
     1.7 +#include "gc_implementation/g1/g1ConcurrentMarkObjArrayProcessor.inline.hpp"
     1.8  
     1.9  // Utility routine to set an exclusive range of cards on the given
    1.10  // card liveness bitmap
    1.11 @@ -224,11 +225,11 @@
    1.12  
    1.13  inline void CMTask::push(oop obj) {
    1.14    HeapWord* objAddr = (HeapWord*) obj;
    1.15 -  assert(_g1h->is_in_g1_reserved(objAddr), "invariant");
    1.16 -  assert(!_g1h->is_on_master_free_list(
    1.17 +  assert(G1CMObjArrayProcessor::is_array_slice(obj) || _g1h->is_in_g1_reserved(objAddr), "invariant");
    1.18 +  assert(G1CMObjArrayProcessor::is_array_slice(obj) || !_g1h->is_on_master_free_list(
    1.19                _g1h->heap_region_containing((HeapWord*) objAddr)), "invariant");
    1.20 -  assert(!_g1h->is_obj_ill(obj), "invariant");
    1.21 -  assert(_nextMarkBitMap->isMarked(objAddr), "invariant");
    1.22 +  assert(G1CMObjArrayProcessor::is_array_slice(obj) || !_g1h->is_obj_ill(obj), "invariant");
    1.23 +  assert(G1CMObjArrayProcessor::is_array_slice(obj) || _nextMarkBitMap->isMarked(objAddr), "invariant");
    1.24  
    1.25    if (_cm->verbose_high()) {
    1.26      gclog_or_tty->print_cr("[%u] pushing " PTR_FORMAT, _worker_id, p2i((void*) obj));
    1.27 @@ -365,6 +366,11 @@
    1.28    }
    1.29  }
    1.30  
    1.31 +inline size_t CMTask::scan_objArray(objArrayOop obj, MemRegion mr) {
    1.32 +  obj->oop_iterate(_cm_oop_closure, mr);
    1.33 +  return mr.word_size();
    1.34 +}
    1.35 +
    1.36  inline void ConcurrentMark::markPrev(oop p) {
    1.37    assert(!_prevMarkBitMap->isMarked((HeapWord*) p), "sanity");
    1.38    // Note we are overriding the read-only view of the prev map here, via

mercurial