Mercurial > hg > truffle
diff src/share/vm/gc_implementation/g1/concurrentMark.cpp @ 989:148e5441d916
6863023: need non-perm oops in code cache for JSR 292
Summary: Make a special root-list for those few nmethods which might contain non-perm oops.
Reviewed-by: twisti, kvn, never, jmasa, ysr
author | jrose |
---|---|
date | Tue, 15 Sep 2009 21:53:47 -0700 |
parents | 308762b2bf14 |
children | 54b3b351d6f9 |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp Tue Sep 15 11:09:34 2009 -0700 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp Tue Sep 15 21:53:47 2009 -0700 @@ -747,10 +747,11 @@ // 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 @@ 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 @@ 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 @@ 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);