Skip to content
This repository was archived by the owner on Aug 27, 2022. It is now read-only.
/ lanai Public archive

Commit a372be4

Browse files
committedDec 15, 2020
8258244: Shenandoah: Not expecting forwarded object in roots during mark after JDK-8240868
Reviewed-by: rkennke
1 parent 568dc29 commit a372be4

File tree

1 file changed

+6
-20
lines changed

1 file changed

+6
-20
lines changed
 

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

+6-20
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
#include "oops/oop.inline.hpp"
5252
#include "runtime/handles.inline.hpp"
5353

54-
template<UpdateRefsMode UPDATE_REFS>
5554
class ShenandoahInitMarkRootsClosure : public OopClosure {
5655
private:
5756
ShenandoahObjToScanQueue* _queue;
@@ -60,7 +59,7 @@ class ShenandoahInitMarkRootsClosure : public OopClosure {
6059

6160
template <class T>
6261
inline void do_oop_work(T* p) {
63-
ShenandoahConcurrentMark::mark_through_ref<T, UPDATE_REFS, NO_DEDUP>(p, _heap, _queue, _mark_context, false);
62+
ShenandoahConcurrentMark::mark_through_ref<T, NONE, NO_DEDUP>(p, _heap, _queue, _mark_context, false);
6463
}
6564

6665
public:
@@ -81,7 +80,6 @@ ShenandoahMarkRefsSuperClosure::ShenandoahMarkRefsSuperClosure(ShenandoahObjToSc
8180
_weak(false)
8281
{ }
8382

84-
template<UpdateRefsMode UPDATE_REFS>
8583
class ShenandoahInitMarkRootsTask : public AbstractGangTask {
8684
private:
8785
ShenandoahRootScanner* _rp;
@@ -101,7 +99,7 @@ class ShenandoahInitMarkRootsTask : public AbstractGangTask {
10199

102100
ShenandoahObjToScanQueue* q = queues->queue(worker_id);
103101

104-
ShenandoahInitMarkRootsClosure<UPDATE_REFS> mark_cl(q);
102+
ShenandoahInitMarkRootsClosure mark_cl(q);
105103
do_work(heap, &mark_cl, worker_id);
106104
}
107105

@@ -301,15 +299,8 @@ void ShenandoahConcurrentMark::mark_roots(ShenandoahPhaseTimings::Phase root_pha
301299
TASKQUEUE_STATS_ONLY(task_queues()->reset_taskqueue_stats());
302300
task_queues()->reserve(nworkers);
303301

304-
if (heap->has_forwarded_objects()) {
305-
ShenandoahInitMarkRootsTask<RESOLVE> mark_roots(&root_proc);
306-
workers->run_task(&mark_roots);
307-
} else {
308-
// No need to update references, which means the heap is stable.
309-
// Can save time not walking through forwarding pointers.
310-
ShenandoahInitMarkRootsTask<NONE> mark_roots(&root_proc);
311-
workers->run_task(&mark_roots);
312-
}
302+
ShenandoahInitMarkRootsTask mark_roots(&root_proc);
303+
workers->run_task(&mark_roots);
313304
}
314305

315306
void ShenandoahConcurrentMark::update_roots(ShenandoahPhaseTimings::Phase root_phase) {
@@ -463,13 +454,8 @@ void ShenandoahConcurrentMark::finish_mark_from_roots(bool full_gc) {
463454
ShenandoahPhaseTimings::full_gc_scan_conc_roots :
464455
ShenandoahPhaseTimings::degen_gc_scan_conc_roots;
465456
ShenandoahGCPhase gc_phase(phase);
466-
if (_heap->has_forwarded_objects()) {
467-
ShenandoahProcessConcurrentRootsTask<ShenandoahMarkResolveRefsClosure> task(this, phase, nworkers);
468-
_heap->workers()->run_task(&task);
469-
} else {
470-
ShenandoahProcessConcurrentRootsTask<ShenandoahMarkRefsClosure> task(this, phase, nworkers);
471-
_heap->workers()->run_task(&task);
472-
}
457+
ShenandoahProcessConcurrentRootsTask<ShenandoahMarkRefsClosure> task(this, phase, nworkers);
458+
_heap->workers()->run_task(&task);
473459
}
474460

475461
// Finally mark everything else we've got in our queues during the previous steps.

0 commit comments

Comments
 (0)
This repository has been archived.