Skip to content

Commit 05b0a01

Browse files
committedDec 9, 2022
8298281: Serial: Refactor MarkAndPushClosure
Reviewed-by: stefank, sjohanss
1 parent e3c6cf8 commit 05b0a01

File tree

3 files changed

+6
-24
lines changed

3 files changed

+6
-24
lines changed
 

‎src/hotspot/share/gc/serial/markSweep.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ StringDedup::Requests* MarkSweep::_string_dedup_requests = NULL;
6161

6262
MarkSweep::FollowRootClosure MarkSweep::follow_root_closure;
6363

64-
MarkAndPushClosure MarkSweep::mark_and_push_closure;
64+
MarkAndPushClosure MarkSweep::mark_and_push_closure(ClassLoaderData::_claim_stw_fullgc_mark);
6565
CLDToOopClosure MarkSweep::follow_cld_closure(&mark_and_push_closure, ClassLoaderData::_claim_stw_fullgc_mark);
6666
CLDToOopClosure MarkSweep::adjust_cld_closure(&adjust_pointer_closure, ClassLoaderData::_claim_stw_fullgc_adjust);
6767

‎src/hotspot/share/gc/serial/markSweep.hpp

+4-12
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@
3838

3939
class ReferenceProcessor;
4040
class DataLayout;
41-
class Method;
42-
class nmethod;
4341
class SerialOldTracer;
4442
class STWGCTimer;
4543

@@ -152,8 +150,6 @@ class MarkSweep : AllStatic {
152150

153151
static void follow_klass(Klass* klass);
154152

155-
static void follow_cld(ClassLoaderData* cld);
156-
157153
template <class T> static inline void adjust_pointer(T* p);
158154

159155
// Check mark and maybe push on marking stack
@@ -174,18 +170,14 @@ class MarkSweep : AllStatic {
174170
static void follow_array_chunk(objArrayOop array, int index);
175171
};
176172

177-
class MarkAndPushClosure: public OopIterateClosure {
173+
class MarkAndPushClosure: public ClaimMetadataVisitingOopIterateClosure {
178174
public:
175+
MarkAndPushClosure(int claim) : ClaimMetadataVisitingOopIterateClosure(claim) {}
176+
179177
template <typename T> void do_oop_work(T* p);
180-
virtual void do_oop(oop* p);
178+
virtual void do_oop( oop* p);
181179
virtual void do_oop(narrowOop* p);
182180

183-
virtual bool do_metadata() { return true; }
184-
virtual void do_klass(Klass* k);
185-
virtual void do_cld(ClassLoaderData* cld);
186-
virtual void do_method(Method* m);
187-
virtual void do_nmethod(nmethod* nm);
188-
189181
void set_ref_discoverer(ReferenceDiscoverer* rd) {
190182
set_ref_discoverer_internal(rd);
191183
}

‎src/hotspot/share/gc/serial/markSweep.inline.hpp

+1-11
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,12 @@
2929

3030
#include "classfile/classLoaderData.inline.hpp"
3131
#include "classfile/javaClasses.inline.hpp"
32-
#include "code/nmethod.hpp"
3332
#include "gc/shared/continuationGCSupport.inline.hpp"
3433
#include "gc/serial/serialStringDedup.hpp"
3534
#include "memory/universe.hpp"
3635
#include "oops/markWord.hpp"
3736
#include "oops/access.inline.hpp"
3837
#include "oops/compressedOops.inline.hpp"
39-
#include "oops/method.hpp"
4038
#include "oops/oop.inline.hpp"
4139
#include "utilities/align.hpp"
4240
#include "utilities/stack.inline.hpp"
@@ -76,18 +74,10 @@ inline void MarkSweep::follow_klass(Klass* klass) {
7674
MarkSweep::mark_and_push(&op);
7775
}
7876

79-
inline void MarkSweep::follow_cld(ClassLoaderData* cld) {
80-
MarkSweep::follow_cld_closure.do_cld(cld);
81-
}
82-
8377
template <typename T>
8478
inline void MarkAndPushClosure::do_oop_work(T* p) { MarkSweep::mark_and_push(p); }
85-
inline void MarkAndPushClosure::do_oop(oop* p) { do_oop_work(p); }
79+
inline void MarkAndPushClosure::do_oop( oop* p) { do_oop_work(p); }
8680
inline void MarkAndPushClosure::do_oop(narrowOop* p) { do_oop_work(p); }
87-
inline void MarkAndPushClosure::do_klass(Klass* k) { MarkSweep::follow_klass(k); }
88-
inline void MarkAndPushClosure::do_cld(ClassLoaderData* cld) { MarkSweep::follow_cld(cld); }
89-
inline void MarkAndPushClosure::do_method(Method* m) { m->record_gc_epoch(); }
90-
inline void MarkAndPushClosure::do_nmethod(nmethod* nm) { nm->follow_nmethod(this); }
9181

9282
template <class T> inline void MarkSweep::adjust_pointer(T* p) {
9383
T heap_oop = RawAccess<>::oop_load(p);

1 commit comments

Comments
 (1)

openjdk-notifier[bot] commented on Dec 9, 2022

@openjdk-notifier[bot]
Please sign in to comment.