File tree 2 files changed +3
-14
lines changed
2 files changed +3
-14
lines changed Original file line number Diff line number Diff line change @@ -1777,27 +1777,14 @@ class G1CMSATBBufferClosure : public SATBBufferClosure {
1777
1777
1778
1778
class G1RemarkThreadsClosure : public ThreadClosure {
1779
1779
G1SATBMarkQueueSet& _qset;
1780
- G1CMOopClosure _cm_cl;
1781
- MarkingCodeBlobClosure _code_cl;
1782
1780
1783
1781
public:
1784
1782
G1RemarkThreadsClosure (G1CollectedHeap* g1h, G1CMTask* task) :
1785
- _qset (G1BarrierSet::satb_mark_queue_set()),
1786
- _cm_cl (g1h, task),
1787
- _code_cl (&_cm_cl, !CodeBlobToOopClosure::FixRelocations, true /* keepalive nmethods */ ) {}
1783
+ _qset (G1BarrierSet::satb_mark_queue_set()) {}
1788
1784
1789
1785
void do_thread (Thread* thread) {
1790
1786
// Transfer any partial buffer to the qset for completed buffer processing.
1791
1787
_qset.flush_queue (G1ThreadLocalData::satb_mark_queue (thread));
1792
- if (thread->is_Java_thread ()) {
1793
- // In theory it should not be necessary to explicitly walk the nmethods to find roots for concurrent marking
1794
- // however the liveness of oops reachable from nmethods have very complex lifecycles:
1795
- // * Alive if on the stack of an executing method
1796
- // * Weakly reachable otherwise
1797
- // Some objects reachable from nmethods, such as the class loader (or klass_holder) of the receiver should be
1798
- // live by the SATB invariant but other oops recorded in nmethods may behave differently.
1799
- JavaThread::cast (thread)->nmethods_do (&_code_cl);
1800
- }
1801
1788
}
1802
1789
};
1803
1790
Original file line number Diff line number Diff line change @@ -99,6 +99,8 @@ bool BarrierSetNMethod::nmethod_entry_barrier(nmethod* nm) {
99
99
100
100
// If the nmethod is the only thing pointing to the oops, and we are using a
101
101
// SATB GC, then it is important that this code marks them live.
102
+ // Also, with concurrent GC, it is possible that frames in continuation stack
103
+ // chunks are not visited if they are allocated after concurrent GC started.
102
104
OopKeepAliveClosure cl;
103
105
nm->oops_do (&cl);
104
106
You can’t perform that action at this time.
1 commit comments
openjdk-notifier[bot] commentedon Feb 20, 2023
Review
Issues