< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.hpp

Print this page

        

*** 48,62 **** --- 48,70 ---- * Parallelization is handled by assigning each GC worker the slice of the heap (the set of regions) * where it does sliding compaction, without interfering with other threads. */ class ShenandoahMarkCompact : public CHeapObj<mtGC> { + friend class ShenandoahPrepareForCompactionObjectClosure; private: GCTimer* _gc_timer; + Stack<markOop, mtGC> _preserved_mark_stack; + Stack<oop, mtGC> _preserved_oop_stack; + Mutex _preserved_mark_lock; + public: + ShenandoahMarkCompact() : _gc_timer(NULL), _preserved_mark_stack(), _preserved_oop_stack(), + _preserved_mark_lock(Mutex::leaf, "Shenandoah Preserved Marks Lock", false, Mutex::_safepoint_check_never) {} void initialize(GCTimer* gc_timer); + void do_it(GCCause::Cause gc_cause); private: void phase1_mark_heap(); void phase2_calculate_target_addresses(ShenandoahHeapRegionSet** worker_slices);
*** 64,71 **** --- 72,82 ---- void phase4_compact_objects(ShenandoahHeapRegionSet** worker_slices); void calculate_target_humongous_objects(); void compact_humongous_objects(); + void preserve_mark(oop obj); + void restore_marks(); + void adjust_marks(); }; #endif // SHARE_GC_SHENANDOAH_SHENANDOAHMARKCOMPACT_HPP
< prev index next >