< prev index next >

src/hotspot/share/gc/g1/g1FullGCPrepareTask.inline.hpp

Print this page
*** 29,10 ***
--- 29,11 ---
  
  #include "gc/g1/g1CollectedHeap.inline.hpp"
  #include "gc/g1/g1FullCollector.hpp"
  #include "gc/g1/g1FullGCCompactionPoint.hpp"
  #include "gc/g1/g1FullGCScope.hpp"
+ #include "gc/shared/slidingForwarding.inline.hpp"
  #include "gc/g1/g1HeapRegion.inline.hpp"
  
  void G1DetermineCompactionQueueClosure::free_empty_humongous_region(HeapRegion* hr) {
    _g1h->free_humongous_region(hr, nullptr);
    _collector->set_free(hr->hrm_index());

*** 111,22 ***
    }
  
    return false;
  }
  
! inline size_t G1SerialRePrepareClosure::apply(oop obj) {
!   if (obj->is_forwarded()) {
      // We skip objects compiled into the first region or
      // into regions not part of the serial compaction point.
!     if (cast_from_oop<HeapWord*>(obj->forwardee()) < _dense_prefix_top) {
        return obj->size();
      }
    }
  
    // Get size and forward.
    size_t size = obj->size();
!   _cp->forward(obj, size);
  
    return size;
  }
  
  #endif // SHARE_GC_G1_G1FULLGCPREPARETASK_INLINE_HPP
--- 112,23 ---
    }
  
    return false;
  }
  
! template <bool ALT_FWD>
! inline size_t G1SerialRePrepareClosure<ALT_FWD>::apply(oop obj) {
+   if (SlidingForwarding::is_forwarded(obj)) {
      // We skip objects compiled into the first region or
      // into regions not part of the serial compaction point.
!     if (cast_from_oop<HeapWord*>(SlidingForwarding::forwardee<ALT_FWD>(obj)) < _dense_prefix_top) {
        return obj->size();
      }
    }
  
    // Get size and forward.
    size_t size = obj->size();
!   _cp->forward<ALT_FWD>(obj, size);
  
    return size;
  }
  
  #endif // SHARE_GC_G1_G1FULLGCPREPARETASK_INLINE_HPP
< prev index next >