< prev index next >
src/share/vm/gc_implementation/shenandoah/shenandoahControlThread.hpp
Print this page
rev 10548 : [backport] Forceful SATB buffer flushes should be time-periodic, not traffic-dependent
rev 10552 : [backport] Concurrent uncommit should be recorded as GC event
*** 43,52 ****
--- 43,59 ----
ShenandoahPeriodicTask(ShenandoahControlThread* thread) :
PeriodicTask(100), _thread(thread) {}
virtual void task();
};
+ // Periodic task to flush SATB buffers periodically.
+ class ShenandoahPeriodicSATBFlushTask : public PeriodicTask {
+ public:
+ ShenandoahPeriodicSATBFlushTask() : PeriodicTask(ShenandoahSATBBufferFlushInterval) {}
+ virtual void task();
+ };
+
class ShenandoahControlThread: public ConcurrentGCThread {
friend class VMStructs;
private:
typedef enum {
*** 60,69 ****
--- 67,77 ----
// explicit GC waiters when alloc failure GC cycle finishes. We want instead
// to make complete explicit cycle for for demanding customers.
Monitor _alloc_failure_waiters_lock;
Monitor _explicit_gc_waiters_lock;
ShenandoahPeriodicTask _periodic_task;
+ ShenandoahPeriodicSATBFlushTask _periodic_satb_flush_task;
private:
static SurrogateLockerThread* _slt;
public:
*** 83,92 ****
--- 91,101 ----
bool check_cancellation_or_degen(ShenandoahHeap::ShenandoahDegenPoint point);
void service_concurrent_normal_cycle(GCCause::Cause cause);
void service_stw_full_cycle(GCCause::Cause cause);
void service_stw_degenerated_cycle(GCCause::Cause cause, ShenandoahHeap::ShenandoahDegenPoint point);
+ void service_uncommit(double shrink_before);
bool try_set_alloc_failure_gc();
void notify_alloc_failure_waiters();
bool is_alloc_failure_gc();
< prev index next >