1
1
/*
2
- * Copyright (c) 2015, 2021 , Red Hat, Inc. All rights reserved.
2
+ * Copyright (c) 2015, 2022 , Red Hat, Inc. All rights reserved.
3
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
4
*
5
5
* This code is free software; you can redistribute it and/or modify it
26
26
#define SHARE_GC_SHENANDOAH_SHENANDOAHOOPCLOSURES_HPP
27
27
28
28
#include " gc/shared/stringdedup/stringDedup.hpp"
29
+ #include " gc/shenandoah/shenandoahClosures.inline.hpp"
29
30
#include " gc/shenandoah/shenandoahHeap.inline.hpp"
30
31
#include " gc/shenandoah/shenandoahTaskqueue.hpp"
31
32
#include " gc/shenandoah/shenandoahUtils.hpp"
@@ -58,6 +59,11 @@ class ShenandoahMarkRefsSuperClosure : public MetadataVisitingOopIterateClosure
58
59
void set_weak (bool weak) {
59
60
_weak = weak;
60
61
}
62
+
63
+ virtual void do_nmethod (nmethod* nm) {
64
+ assert (!is_weak (), " Can't handle weak marking of nmethods" );
65
+ nm->run_nmethod_entry_barrier ();
66
+ }
61
67
};
62
68
63
69
class ShenandoahMarkUpdateRefsSuperClosure : public ShenandoahMarkRefsSuperClosure {
@@ -86,7 +92,6 @@ class ShenandoahMarkUpdateRefsClosure : public ShenandoahMarkUpdateRefsSuperClos
86
92
87
93
virtual void do_oop (narrowOop* p) { do_oop_work (p); }
88
94
virtual void do_oop (oop* p) { do_oop_work (p); }
89
- virtual bool do_metadata () { return false ; }
90
95
};
91
96
92
97
class ShenandoahMarkUpdateRefsMetadataClosure : public ShenandoahMarkUpdateRefsSuperClosure {
@@ -100,7 +105,6 @@ class ShenandoahMarkUpdateRefsMetadataClosure : public ShenandoahMarkUpdateRefsS
100
105
101
106
virtual void do_oop (narrowOop* p) { do_oop_work (p); }
102
107
virtual void do_oop (oop* p) { do_oop_work (p); }
103
- virtual bool do_metadata () { return true ; }
104
108
};
105
109
106
110
@@ -115,7 +119,6 @@ class ShenandoahMarkRefsClosure : public ShenandoahMarkRefsSuperClosure {
115
119
116
120
virtual void do_oop (narrowOop* p) { do_oop_work (p); }
117
121
virtual void do_oop (oop* p) { do_oop_work (p); }
118
- virtual bool do_metadata () { return false ; }
119
122
};
120
123
121
124
@@ -130,10 +133,9 @@ class ShenandoahMarkRefsMetadataClosure : public ShenandoahMarkRefsSuperClosure
130
133
131
134
virtual void do_oop (narrowOop* p) { do_oop_work (p); }
132
135
virtual void do_oop (oop* p) { do_oop_work (p); }
133
- virtual bool do_metadata () { return true ; }
134
136
};
135
137
136
- class ShenandoahUpdateRefsSuperClosure : public BasicOopIterateClosure {
138
+ class ShenandoahUpdateRefsSuperClosure : public ShenandoahOopClosureBase {
137
139
protected:
138
140
ShenandoahHeap* _heap;
139
141
0 commit comments