< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.hpp
Print this page
rev 50928 : Process remaining SATB buffers in final mark/traverse loop instead of separate phase
@@ -64,35 +64,27 @@
inline void count_liveness(jushort* live_data, oop obj);
inline void count_liveness_humongous(oop obj);
// Actual mark loop with closures set up
- template <class T, bool CANCELLABLE, bool DRAIN_SATB>
+ template <class T, bool CANCELLABLE>
void mark_loop_work(T* cl, jushort* live_data, uint worker_id, ParallelTaskTerminator *t);
- template <bool CANCELLABLE, bool DRAIN_SATB>
+ template <bool CANCELLABLE>
void mark_loop_prework(uint worker_id, ParallelTaskTerminator *terminator, ReferenceProcessor *rp,
bool class_unload, bool update_refs, bool strdedup);
public:
// Mark loop entry.
// Translates dynamic arguments to template parameters with progressive currying.
void mark_loop(uint worker_id, ParallelTaskTerminator* terminator, ReferenceProcessor *rp,
- bool cancellable, bool drain_satb,
+ bool cancellable,
bool class_unload, bool update_refs, bool strdedup) {
if (cancellable) {
- if (drain_satb) {
- mark_loop_prework<true, true>(worker_id, terminator, rp, class_unload, update_refs, strdedup);
+ mark_loop_prework<true>(worker_id, terminator, rp, class_unload, update_refs, strdedup);
} else {
- mark_loop_prework<true, false>(worker_id, terminator, rp, class_unload, update_refs, strdedup);
- }
- } else {
- if (drain_satb) {
- mark_loop_prework<false, true>(worker_id, terminator, rp, class_unload, update_refs, strdedup);
- } else {
- mark_loop_prework<false, false>(worker_id, terminator, rp, class_unload, update_refs, strdedup);
- }
+ mark_loop_prework<false>(worker_id, terminator, rp, class_unload, update_refs, strdedup);
}
}
// We need to do this later when the heap is already created.
void initialize(uint workers);
@@ -124,11 +116,10 @@
inline bool try_queue(ShenandoahObjToScanQueue* q, ShenandoahMarkTask &task);
ShenandoahObjToScanQueue* get_queue(uint worker_id);
void clear_queue(ShenandoahObjToScanQueue *q);
- void drain_satb_buffers(uint worker_id, bool remark = false);
ShenandoahObjToScanQueueSet* task_queues() { return _task_queues;}
jushort* get_liveness(uint worker_id);
void cancel();
< prev index next >