--- old/src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.hpp 2019-05-08 16:25:34.040740463 +0200 +++ new/src/hotspot/share/gc/shenandoah/shenandoahMarkCompact.hpp 2019-05-08 16:25:33.827743561 +0200 @@ -50,11 +50,19 @@ */ class ShenandoahMarkCompact : public CHeapObj { + friend class ShenandoahPrepareForCompactionObjectClosure; private: GCTimer* _gc_timer; + Stack _preserved_mark_stack; + Stack _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: @@ -66,6 +74,9 @@ 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