src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.cpp
changeset 55076 785a12e0f89b
parent 54941 af28daff6b98
child 55230 9775d05d69c8
child 58678 9cf78a70fa4f
equal deleted inserted replaced
55075:044f2ca6ce22 55076:785a12e0f89b
    33 #include "gc/shenandoah/shenandoahClosures.inline.hpp"
    33 #include "gc/shenandoah/shenandoahClosures.inline.hpp"
    34 #include "gc/shenandoah/shenandoahCodeRoots.hpp"
    34 #include "gc/shenandoah/shenandoahCodeRoots.hpp"
    35 #include "gc/shenandoah/shenandoahCollectionSet.hpp"
    35 #include "gc/shenandoah/shenandoahCollectionSet.hpp"
    36 #include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
    36 #include "gc/shenandoah/shenandoahCollectorPolicy.hpp"
    37 #include "gc/shenandoah/shenandoahFreeSet.hpp"
    37 #include "gc/shenandoah/shenandoahFreeSet.hpp"
    38 #include "gc/shenandoah/shenandoahForwarding.hpp"
       
    39 #include "gc/shenandoah/shenandoahPhaseTimings.hpp"
    38 #include "gc/shenandoah/shenandoahPhaseTimings.hpp"
    40 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
    39 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
    41 #include "gc/shenandoah/shenandoahHeapRegionSet.inline.hpp"
    40 #include "gc/shenandoah/shenandoahHeapRegionSet.inline.hpp"
    42 #include "gc/shenandoah/shenandoahHeuristics.hpp"
    41 #include "gc/shenandoah/shenandoahHeuristics.hpp"
    43 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
    42 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp"
   631         bool not_allocated = ctx->top_at_mark_start(r) == r->top();
   630         bool not_allocated = ctx->top_at_mark_start(r) == r->top();
   632 
   631 
   633         bool candidate = traversal_regions->is_in(r) && !r->has_live() && not_allocated;
   632         bool candidate = traversal_regions->is_in(r) && !r->has_live() && not_allocated;
   634         if (r->is_humongous_start() && candidate) {
   633         if (r->is_humongous_start() && candidate) {
   635           // Trash humongous.
   634           // Trash humongous.
   636           HeapWord* humongous_obj = r->bottom() + ShenandoahForwarding::word_size();
   635           HeapWord* humongous_obj = r->bottom();
   637           assert(!ctx->is_marked(oop(humongous_obj)), "must not be marked");
   636           assert(!ctx->is_marked(oop(humongous_obj)), "must not be marked");
   638           r->make_trash_immediate();
   637           r->make_trash_immediate();
   639           while (i + 1 < num_regions && _heap->get_region(i + 1)->is_humongous_continuation()) {
   638           while (i + 1 < num_regions && _heap->get_region(i + 1)->is_humongous_continuation()) {
   640             i++;
   639             i++;
   641             r = _heap->get_region(i);
   640             r = _heap->get_region(i);