|
37 | 37 | #include "gc/shenandoah/shenandoahSTWMark.hpp"
|
38 | 38 | #include "gc/shenandoah/shenandoahVerifier.hpp"
|
39 | 39 |
|
40 |
| -template<ShenandoahGenerationType GENERATION> |
41 |
| -class ShenandoahInitMarkRootsClosure : public OopClosure { |
42 |
| -private: |
43 |
| - ShenandoahObjToScanQueue* const _queue; |
44 |
| - ShenandoahMarkingContext* const _mark_context; |
45 |
| - |
46 |
| - template <class T> |
47 |
| - inline void do_oop_work(T* p); |
48 |
| -public: |
49 |
| - ShenandoahInitMarkRootsClosure(ShenandoahObjToScanQueue* q); |
50 |
| - |
51 |
| - void do_oop(narrowOop* p) { do_oop_work(p); } |
52 |
| - void do_oop(oop* p) { do_oop_work(p); } |
53 |
| -}; |
54 |
| - |
55 |
| -template <ShenandoahGenerationType GENERATION> |
56 |
| -ShenandoahInitMarkRootsClosure<GENERATION>::ShenandoahInitMarkRootsClosure(ShenandoahObjToScanQueue* q) : |
57 |
| - _queue(q), |
58 |
| - _mark_context(ShenandoahHeap::heap()->marking_context()) { |
59 |
| -} |
60 |
| - |
61 |
| -template <ShenandoahGenerationType GENERATION> |
62 |
| -template <class T> |
63 |
| -void ShenandoahInitMarkRootsClosure<GENERATION>::do_oop_work(T* p) { |
64 |
| - ShenandoahMark::mark_through_ref<T, GENERATION>(p, _queue, _mark_context, false); |
65 |
| -} |
66 |
| - |
67 | 40 | class ShenandoahSTWMarkTask : public WorkerTask {
|
68 | 41 | private:
|
69 | 42 | ShenandoahSTWMark* const _mark;
|
@@ -137,8 +110,9 @@ void ShenandoahSTWMark::mark() {
|
137 | 110 | }
|
138 | 111 |
|
139 | 112 | void ShenandoahSTWMark::mark_roots(uint worker_id) {
|
140 |
| - ShenandoahInitMarkRootsClosure<NON_GEN> init_mark(task_queues()->queue(worker_id)); |
141 |
| - _root_scanner.roots_do(&init_mark, worker_id); |
| 113 | + ShenandoahReferenceProcessor* rp = ShenandoahHeap::heap()->ref_processor(); |
| 114 | + ShenandoahMarkRefsClosure<NON_GEN> cl(task_queues()->queue(worker_id), rp); |
| 115 | + _root_scanner.roots_do(&cl, worker_id); |
142 | 116 | }
|
143 | 117 |
|
144 | 118 | void ShenandoahSTWMark::finish_mark(uint worker_id) {
|
|
0 commit comments