mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 22:34:27 +02:00
6863023: need non-perm oops in code cache for JSR 292
Make a special root-list for those few nmethods which might contain non-perm oops. Reviewed-by: twisti, kvn, never, jmasa, ysr
This commit is contained in:
parent
1cf5b7ae11
commit
e261aecad8
74 changed files with 979 additions and 279 deletions
|
@ -747,10 +747,11 @@ void ConcurrentMark::checkpointRootsInitialPre() {
|
|||
// clear the mark bitmap (no grey objects to start with)
|
||||
_nextMarkBitMap->clearAll();
|
||||
PrintReachableClosure prcl(_nextMarkBitMap);
|
||||
g1h->process_strong_roots(
|
||||
g1h->process_strong_roots(true, // activate StrongRootsScope
|
||||
false, // fake perm gen collection
|
||||
SharedHeap::SO_AllClasses,
|
||||
&prcl, // Regular roots
|
||||
NULL, // do not visit active blobs
|
||||
&prcl // Perm Gen Roots
|
||||
);
|
||||
// The root iteration above "consumed" dirty cards in the perm gen.
|
||||
|
@ -866,9 +867,11 @@ void ConcurrentMark::checkpointRootsInitial() {
|
|||
g1h->set_marking_started();
|
||||
g1h->rem_set()->prepare_for_younger_refs_iterate(false);
|
||||
|
||||
g1h->process_strong_roots(false, // fake perm gen collection
|
||||
g1h->process_strong_roots(true, // activate StrongRootsScope
|
||||
false, // fake perm gen collection
|
||||
SharedHeap::SO_AllClasses,
|
||||
¬Older, // Regular roots
|
||||
NULL, // do not visit active blobs
|
||||
&older // Perm Gen Roots
|
||||
);
|
||||
checkpointRootsInitialPost();
|
||||
|
@ -1963,7 +1966,7 @@ void ConcurrentMark::checkpointRootsFinalWork() {
|
|||
g1h->ensure_parsability(false);
|
||||
|
||||
if (ParallelGCThreads > 0) {
|
||||
g1h->change_strong_roots_parity();
|
||||
G1CollectedHeap::StrongRootsScope srs(g1h);
|
||||
// this is remark, so we'll use up all available threads
|
||||
int active_workers = ParallelGCThreads;
|
||||
set_phase(active_workers, false);
|
||||
|
@ -1980,7 +1983,7 @@ void ConcurrentMark::checkpointRootsFinalWork() {
|
|||
SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set();
|
||||
guarantee( satb_mq_set.completed_buffers_num() == 0, "invariant" );
|
||||
} else {
|
||||
g1h->change_strong_roots_parity();
|
||||
G1CollectedHeap::StrongRootsScope srs(g1h);
|
||||
// this is remark, so we'll use up all available threads
|
||||
int active_workers = 1;
|
||||
set_phase(active_workers, false);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue