equal
deleted
inserted
replaced
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" |
38 #include "gc/shenandoah/shenandoahPhaseTimings.hpp" |
39 #include "gc/shenandoah/shenandoahPhaseTimings.hpp" |
39 #include "gc/shenandoah/shenandoahHeap.inline.hpp" |
40 #include "gc/shenandoah/shenandoahHeap.inline.hpp" |
40 #include "gc/shenandoah/shenandoahHeapRegionSet.inline.hpp" |
41 #include "gc/shenandoah/shenandoahHeapRegionSet.inline.hpp" |
41 #include "gc/shenandoah/shenandoahHeuristics.hpp" |
42 #include "gc/shenandoah/shenandoahHeuristics.hpp" |
42 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp" |
43 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp" |
638 bool not_allocated = ctx->top_at_mark_start(r) == r->top(); |
639 bool not_allocated = ctx->top_at_mark_start(r) == r->top(); |
639 |
640 |
640 bool candidate = traversal_regions->is_in(r) && !r->has_live() && not_allocated; |
641 bool candidate = traversal_regions->is_in(r) && !r->has_live() && not_allocated; |
641 if (r->is_humongous_start() && candidate) { |
642 if (r->is_humongous_start() && candidate) { |
642 // Trash humongous. |
643 // Trash humongous. |
643 HeapWord* humongous_obj = r->bottom() + ShenandoahBrooksPointer::word_size(); |
644 HeapWord* humongous_obj = r->bottom() + ShenandoahForwarding::word_size(); |
644 assert(!ctx->is_marked(oop(humongous_obj)), "must not be marked"); |
645 assert(!ctx->is_marked(oop(humongous_obj)), "must not be marked"); |
645 r->make_trash_immediate(); |
646 r->make_trash_immediate(); |
646 while (i + 1 < num_regions && _heap->get_region(i + 1)->is_humongous_continuation()) { |
647 while (i + 1 < num_regions && _heap->get_region(i + 1)->is_humongous_continuation()) { |
647 i++; |
648 i++; |
648 r = _heap->get_region(i); |
649 r = _heap->get_region(i); |