src/share/vm/gc/g1/g1MarkSweep.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/share/vm/gc/g1/g1MarkSweep.cpp
src/share/vm/gc/g1/g1MarkSweep.cpp
Print this page
*** 202,212 ****
prepare_compaction();
}
class G1AdjustPointersClosure: public HeapRegionClosure {
public:
! bool doHeapRegion(HeapRegion* r) {
if (r->is_humongous()) {
if (r->is_starts_humongous()) {
// We must adjust the pointers on the single H object.
oop obj = oop(r->bottom());
// point all the oops to the new location
--- 202,212 ----
prepare_compaction();
}
class G1AdjustPointersClosure: public HeapRegionClosure {
public:
! void doHeapRegion(HeapRegion* r) {
if (r->is_humongous()) {
if (r->is_starts_humongous()) {
// We must adjust the pointers on the single H object.
oop obj = oop(r->bottom());
// point all the oops to the new location
*** 214,224 ****
}
} else if (!r->is_pinned()) {
// This really ought to be "as_CompactibleSpace"...
r->adjust_pointers();
}
- return false;
}
};
class G1AlwaysTrueClosure: public BoolObjectClosure {
public:
--- 214,223 ----
*** 262,272 ****
class G1SpaceCompactClosure: public HeapRegionClosure {
public:
G1SpaceCompactClosure() {}
! bool doHeapRegion(HeapRegion* hr) {
if (hr->is_humongous()) {
if (hr->is_starts_humongous()) {
oop obj = oop(hr->bottom());
if (obj->is_gc_marked()) {
obj->init_mark();
--- 261,271 ----
class G1SpaceCompactClosure: public HeapRegionClosure {
public:
G1SpaceCompactClosure() {}
! void doHeapRegion(HeapRegion* hr) {
if (hr->is_humongous()) {
if (hr->is_starts_humongous()) {
oop obj = oop(hr->bottom());
if (obj->is_gc_marked()) {
obj->init_mark();
*** 276,286 ****
}
hr->reset_during_compaction();
} else if (!hr->is_pinned()) {
hr->compact();
}
- return false;
}
};
void G1MarkSweep::mark_sweep_phase4() {
// All pointers are now adjusted, move objects accordingly
--- 275,284 ----
*** 359,369 ****
// We'll recalculate total used bytes and recreate the free list
// at the end of the GC, so no point in updating those values here.
_g1h->remove_from_old_sets(0, _humongous_regions_removed);
}
! bool G1PrepareCompactClosure::doHeapRegion(HeapRegion* hr) {
if (hr->is_humongous()) {
oop obj = oop(hr->humongous_start_region()->bottom());
if (hr->is_starts_humongous() && obj->is_gc_marked()) {
obj->forward_to(obj);
}
--- 357,367 ----
// We'll recalculate total used bytes and recreate the free list
// at the end of the GC, so no point in updating those values here.
_g1h->remove_from_old_sets(0, _humongous_regions_removed);
}
! void G1PrepareCompactClosure::doHeapRegion(HeapRegion* hr) {
if (hr->is_humongous()) {
oop obj = oop(hr->humongous_start_region()->bottom());
if (hr->is_starts_humongous() && obj->is_gc_marked()) {
obj->forward_to(obj);
}
*** 371,377 ****
free_humongous_region(hr);
}
} else if (!hr->is_pinned()) {
prepare_for_compaction(hr, hr->end());
}
- return false;
}
--- 369,374 ----
src/share/vm/gc/g1/g1MarkSweep.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File