Skip to content

Commit 125184e

Browse files
committedApr 12, 2021
8265012: Shenandoah: Backout JDK-8264718
Reviewed-by: shade
1 parent be0d46c commit 125184e

File tree

5 files changed

+30
-43
lines changed

5 files changed

+30
-43
lines changed
 

‎src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp

+2-7
Original file line numberDiff line numberDiff line change
@@ -191,13 +191,8 @@ ShenandoahMarkConcurrentRootsTask::ShenandoahMarkConcurrentRootsTask(ShenandoahO
191191
void ShenandoahMarkConcurrentRootsTask::work(uint worker_id) {
192192
ShenandoahConcurrentWorkerSession worker_session(worker_id);
193193
ShenandoahObjToScanQueue* q = _queue_set->queue(worker_id);
194-
if (ShenandoahStringDedup::is_enabled()) {
195-
ShenandoahMarkRefsDedupClosure cl(q, _rp);
196-
_root_scanner.roots_do(&cl, worker_id);
197-
} else {
198-
ShenandoahMarkRefsClosure cl(q, _rp);
199-
_root_scanner.roots_do(&cl, worker_id);
200-
}
194+
ShenandoahMarkRefsClosure cl(q, _rp);
195+
_root_scanner.roots_do(&cl, worker_id);
201196
}
202197

203198
void ShenandoahConcurrentMark::mark_concurrent_roots() {

‎src/hotspot/share/gc/shenandoah/shenandoahMark.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ ShenandoahMarkRefsSuperClosure::ShenandoahMarkRefsSuperClosure(ShenandoahObjToSc
4141
_weak(false)
4242
{ }
4343

44+
ShenandoahInitMarkRootsClosure::ShenandoahInitMarkRootsClosure(ShenandoahObjToScanQueue* q) :
45+
_queue(q),
46+
_mark_context(ShenandoahHeap::heap()->marking_context()) {
47+
}
48+
4449
ShenandoahMark::ShenandoahMark() :
4550
_task_queues(ShenandoahHeap::heap()->marking_context()->task_queues()) {
4651
}

‎src/hotspot/share/gc/shenandoah/shenandoahMark.hpp

+15
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,21 @@
3131

3232
class ShenandoahCMDrainMarkingStackClosure;
3333

34+
class ShenandoahInitMarkRootsClosure : public OopClosure {
35+
private:
36+
ShenandoahObjToScanQueue* const _queue;
37+
ShenandoahMarkingContext* const _mark_context;
38+
39+
template <class T>
40+
inline void do_oop_work(T* p);
41+
42+
public:
43+
ShenandoahInitMarkRootsClosure(ShenandoahObjToScanQueue* q);
44+
45+
void do_oop(narrowOop* p) { do_oop_work(p); }
46+
void do_oop(oop* p) { do_oop_work(p); }
47+
};
48+
3449
// Base class for mark
3550
// Mark class does not maintain states. Instead, mark states are
3651
// maintained by task queues, mark bitmap and SATB buffers (concurrent mark)

‎src/hotspot/share/gc/shenandoah/shenandoahMark.inline.hpp

+5
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@
3939
#include "runtime/prefetch.inline.hpp"
4040
#include "utilities/powerOfTwo.hpp"
4141

42+
template <class T>
43+
void ShenandoahInitMarkRootsClosure::do_oop_work(T* p) {
44+
ShenandoahMark::mark_through_ref<T, NO_DEDUP>(p, _queue, _mark_context, false);
45+
}
46+
4247
template <class T>
4348
void ShenandoahMark::do_task(ShenandoahObjToScanQueue* q, T* cl, ShenandoahLiveData* live_data, ShenandoahMarkTask* task) {
4449
oop obj = task->obj();

‎src/hotspot/share/gc/shenandoah/shenandoahSTWMark.cpp

+3-36
Original file line numberDiff line numberDiff line change
@@ -33,38 +33,9 @@
3333
#include "gc/shenandoah/shenandoahOopClosures.inline.hpp"
3434
#include "gc/shenandoah/shenandoahReferenceProcessor.hpp"
3535
#include "gc/shenandoah/shenandoahRootProcessor.inline.hpp"
36-
#include "gc/shenandoah/shenandoahStringDedup.hpp"
3736
#include "gc/shenandoah/shenandoahSTWMark.hpp"
3837
#include "gc/shenandoah/shenandoahVerifier.hpp"
3938

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-
6839
class ShenandoahSTWMarkTask : public AbstractGangTask {
6940
private:
7041
ShenandoahSTWMark* const _mark;
@@ -128,13 +99,8 @@ void ShenandoahSTWMark::mark() {
12899
}
129100

130101
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);
138104
}
139105

140106
void ShenandoahSTWMark::finish_mark(uint worker_id) {
@@ -146,3 +112,4 @@ void ShenandoahSTWMark::finish_mark(uint worker_id) {
146112
false, // not cancellable
147113
ShenandoahStringDedup::is_enabled());
148114
}
115+

0 commit comments

Comments
 (0)
Please sign in to comment.