--- a/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Wed Mar 25 10:36:08 2009 -0400
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp Wed Mar 25 13:10:54 2009 -0700
@@ -157,7 +157,6 @@
class G1PrepareCompactClosure: public HeapRegionClosure {
ModRefBarrierSet* _mrbs;
CompactPoint _cp;
- bool _popular_only;
void free_humongous_region(HeapRegion* hr) {
HeapWord* bot = hr->bottom();
@@ -172,17 +171,11 @@
}
public:
- G1PrepareCompactClosure(CompactibleSpace* cs, bool popular_only) :
+ G1PrepareCompactClosure(CompactibleSpace* cs) :
_cp(NULL, cs, cs->initialize_threshold()),
- _mrbs(G1CollectedHeap::heap()->mr_bs()),
- _popular_only(popular_only)
+ _mrbs(G1CollectedHeap::heap()->mr_bs())
{}
bool doHeapRegion(HeapRegion* hr) {
- if (_popular_only && !hr->popular())
- return true; // terminate early
- else if (!_popular_only && hr->popular())
- return false; // skip this one.
-
if (hr->isHumongous()) {
if (hr->startsHumongous()) {
oop obj = oop(hr->bottom());
@@ -203,20 +196,15 @@
return false;
}
};
-// Stolen verbatim from g1CollectedHeap.cpp
+
+// Finds the first HeapRegion.
class FindFirstRegionClosure: public HeapRegionClosure {
HeapRegion* _a_region;
- bool _find_popular;
public:
- FindFirstRegionClosure(bool find_popular) :
- _a_region(NULL), _find_popular(find_popular) {}
+ FindFirstRegionClosure() : _a_region(NULL) {}
bool doHeapRegion(HeapRegion* r) {
- if (r->popular() == _find_popular) {
- _a_region = r;
- return true;
- } else {
- return false;
- }
+ _a_region = r;
+ return true;
}
HeapRegion* result() { return _a_region; }
};
@@ -242,30 +230,15 @@
TraceTime tm("phase 2", PrintGC && Verbose, true, gclog_or_tty);
GenMarkSweep::trace("2");
- // First we compact the popular regions.
- if (G1NumPopularRegions > 0) {
- CompactibleSpace* sp = g1h->first_compactible_space();
- FindFirstRegionClosure cl(true /*find_popular*/);
- g1h->heap_region_iterate(&cl);
- HeapRegion *r = cl.result();
- assert(r->popular(), "should have found a popular region.");
- assert(r == sp, "first popular heap region should "
- "== first compactible space");
- G1PrepareCompactClosure blk(sp, true/*popular_only*/);
- g1h->heap_region_iterate(&blk);
- }
-
- // Now we do the regular regions.
- FindFirstRegionClosure cl(false /*find_popular*/);
+ FindFirstRegionClosure cl;
g1h->heap_region_iterate(&cl);
HeapRegion *r = cl.result();
- assert(!r->popular(), "should have founda non-popular region.");
CompactibleSpace* sp = r;
if (r->isHumongous() && oop(r->bottom())->is_gc_marked()) {
sp = r->next_compaction_space();
}
- G1PrepareCompactClosure blk(sp, false/*popular_only*/);
+ G1PrepareCompactClosure blk(sp);
g1h->heap_region_iterate(&blk);
CompactPoint perm_cp(pg, NULL, NULL);