< prev index next >
src/share/vm/gc/g1/g1MarkSweep.cpp
Print this page
rev 12504 : 8171235: Move archive object code from G1MarkSweep into G1ArchiveAllocator
Reviewed-by:
*** 54,66 ****
#include "utilities/copy.hpp"
#include "utilities/events.hpp"
class HeapRegion;
- bool G1MarkSweep::_archive_check_enabled = false;
- G1ArchiveRegionMap G1MarkSweep::_archive_region_map;
-
void G1MarkSweep::invoke_at_safepoint(ReferenceProcessor* rp,
bool clear_all_softrefs) {
assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
#ifdef ASSERT
--- 54,63 ----
*** 312,341 ****
G1SpaceCompactClosure blk;
g1h->heap_region_iterate(&blk);
}
- void G1MarkSweep::enable_archive_object_check() {
- assert(!_archive_check_enabled, "archive range check already enabled");
- _archive_check_enabled = true;
- size_t length = Universe::heap()->max_capacity();
- _archive_region_map.initialize((HeapWord*)Universe::heap()->base(),
- (HeapWord*)Universe::heap()->base() + length,
- HeapRegion::GrainBytes);
- }
-
- void G1MarkSweep::set_range_archive(MemRegion range, bool is_archive) {
- assert(_archive_check_enabled, "archive range check not enabled");
- _archive_region_map.set_by_address(range, is_archive);
- }
-
- bool G1MarkSweep::in_archive_range(oop object) {
- // This is the out-of-line part of is_archive_object test, done separately
- // to avoid additional performance impact when the check is not enabled.
- return _archive_region_map.get_by_address((HeapWord*)object);
- }
-
void G1MarkSweep::prepare_compaction_work(G1PrepareCompactClosure* blk) {
G1CollectedHeap* g1h = G1CollectedHeap::heap();
g1h->heap_region_iterate(blk);
blk->update_sets();
}
--- 309,318 ----
< prev index next >