64
65 ShenandoahHeapRegionSet* const traversal_set() const { return _traversal_set; }
66 ShenandoahHeapRegionSet* const root_regions() const { return _root_regions;}
67
68 void reset();
69 void prepare();
70 void init_traversal_collection();
71 void concurrent_traversal_collection();
72 void final_traversal_collection();
73
74 template <class T, bool STRING_DEDUP, bool DEGEN, bool UPDATE_MATRIX>
75 inline void process_oop(T* p, Thread* thread, ShenandoahObjToScanQueue* queue, oop base_obj, ShenandoahStrDedupQueue* dq = NULL);
76
77 bool check_and_handle_cancelled_gc(ParallelTaskTerminator* terminator);
78
79 ShenandoahObjToScanQueueSet* task_queues();
80
81 jushort* get_liveness(uint worker_id);
82 void flush_liveness(uint worker_id);
83
84 void main_loop(uint worker_id, ParallelTaskTerminator* terminator, bool do_satb);
85
86 void push_arraycopy(HeapWord* start, size_t count);
87
88 private:
89
90 void prepare_regions();
91
92 template <bool DO_SATB>
93 void main_loop_prework(uint w, ParallelTaskTerminator* t);
94
95 template <class T, bool DO_SATB>
96 void main_loop_work(T* cl, jushort* live_data, uint worker_id, ParallelTaskTerminator* terminator);
97
98 void preclean_weak_refs();
99 void weak_refs_work();
100 void weak_refs_work_doit();
101
102 void fixup_roots();
103
104 template <class T>
105 bool process_arraycopy_task(T* cl);
106 };
107
108 #endif // SHARE_VM_GC_SHENANDOAH_SHENANDOAHTRAVERSALGC_HPP
|
64
65 ShenandoahHeapRegionSet* const traversal_set() const { return _traversal_set; }
66 ShenandoahHeapRegionSet* const root_regions() const { return _root_regions;}
67
68 void reset();
69 void prepare();
70 void init_traversal_collection();
71 void concurrent_traversal_collection();
72 void final_traversal_collection();
73
74 template <class T, bool STRING_DEDUP, bool DEGEN, bool UPDATE_MATRIX>
75 inline void process_oop(T* p, Thread* thread, ShenandoahObjToScanQueue* queue, oop base_obj, ShenandoahStrDedupQueue* dq = NULL);
76
77 bool check_and_handle_cancelled_gc(ParallelTaskTerminator* terminator);
78
79 ShenandoahObjToScanQueueSet* task_queues();
80
81 jushort* get_liveness(uint worker_id);
82 void flush_liveness(uint worker_id);
83
84 void main_loop(uint worker_id, ParallelTaskTerminator* terminator);
85
86 void push_arraycopy(HeapWord* start, size_t count);
87
88 private:
89
90 void prepare_regions();
91
92 template <class T>
93 void main_loop_work(T* cl, jushort* live_data, uint worker_id, ParallelTaskTerminator* terminator);
94
95 void preclean_weak_refs();
96 void weak_refs_work();
97 void weak_refs_work_doit();
98
99 void fixup_roots();
100
101 template <class T>
102 bool process_arraycopy_task(T* cl);
103 };
104
105 #endif // SHARE_VM_GC_SHENANDOAH_SHENANDOAHTRAVERSALGC_HPP
|