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" |
|
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); |