33
33
#include " gc/shenandoah/shenandoahOopClosures.inline.hpp"
34
34
#include " gc/shenandoah/shenandoahReferenceProcessor.hpp"
35
35
#include " gc/shenandoah/shenandoahRootProcessor.inline.hpp"
36
- #include " gc/shenandoah/shenandoahStringDedup.hpp"
37
36
#include " gc/shenandoah/shenandoahSTWMark.hpp"
38
37
#include " gc/shenandoah/shenandoahVerifier.hpp"
39
38
40
- template <StringDedupMode STRING_DEDUP>
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
-
49
- public:
50
- ShenandoahInitMarkRootsClosure (ShenandoahObjToScanQueue* q);
51
-
52
- void do_oop (narrowOop* p) { do_oop_work (p); }
53
- void do_oop (oop* p) { do_oop_work (p); }
54
- };
55
-
56
- template <StringDedupMode STRING_DEDUP>
57
- ShenandoahInitMarkRootsClosure<STRING_DEDUP>::ShenandoahInitMarkRootsClosure(ShenandoahObjToScanQueue* q) :
58
- _queue (q),
59
- _mark_context(ShenandoahHeap::heap()->marking_context()) {
60
- }
61
-
62
- template <StringDedupMode STRING_DEDUP>
63
- template <class T >
64
- void ShenandoahInitMarkRootsClosure<STRING_DEDUP>::do_oop_work(T* p) {
65
- ShenandoahMark::mark_through_ref<T, STRING_DEDUP>(p, _queue, _mark_context, false );
66
- }
67
-
68
39
class ShenandoahSTWMarkTask : public AbstractGangTask {
69
40
private:
70
41
ShenandoahSTWMark* const _mark;
@@ -128,13 +99,8 @@ void ShenandoahSTWMark::mark() {
128
99
}
129
100
130
101
void ShenandoahSTWMark::mark_roots (uint worker_id) {
131
- if (ShenandoahStringDedup::is_enabled ()) {
132
- ShenandoahInitMarkRootsClosure<ENQUEUE_DEDUP> init_mark (task_queues ()->queue (worker_id));
133
- _root_scanner.roots_do (&init_mark, worker_id);
134
- } else {
135
- ShenandoahInitMarkRootsClosure<NO_DEDUP> init_mark (task_queues ()->queue (worker_id));
136
- _root_scanner.roots_do (&init_mark, worker_id);
137
- }
102
+ ShenandoahInitMarkRootsClosure init_mark (task_queues ()->queue (worker_id));
103
+ _root_scanner.roots_do (&init_mark, worker_id);
138
104
}
139
105
140
106
void ShenandoahSTWMark::finish_mark (uint worker_id) {
@@ -146,3 +112,4 @@ void ShenandoahSTWMark::finish_mark(uint worker_id) {
146
112
false , // not cancellable
147
113
ShenandoahStringDedup::is_enabled ());
148
114
}
115
+
0 commit comments