diff -r 64331e014bc7 -r 31b159f30fb2 src/hotspot/share/gc/g1/g1ConcurrentMarkBitMap.cpp --- a/src/hotspot/share/gc/g1/g1ConcurrentMarkBitMap.cpp Wed Aug 29 19:48:28 2018 +0200 +++ b/src/hotspot/share/gc/g1/g1ConcurrentMarkBitMap.cpp Wed Aug 29 20:15:09 2018 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,23 +28,8 @@ #include "gc/g1/heapRegion.hpp" #include "memory/virtualspace.hpp" -void G1CMBitMap::print_on_error(outputStream* st, const char* prefix) const { - _bm.print_on_error(st, prefix); -} - -size_t G1CMBitMap::compute_size(size_t heap_size) { - return ReservedSpace::allocation_align_size_up(heap_size / mark_distance()); -} - -size_t G1CMBitMap::mark_distance() { - return MinObjAlignmentInBytes * BitsPerByte; -} - void G1CMBitMap::initialize(MemRegion heap, G1RegionToSpaceMapper* storage) { - _covered = heap; - - _bm = BitMapView((BitMap::bm_word_t*) storage->reserved().start(), _covered.word_size() >> _shifter); - + MarkBitMap::initialize(heap, storage->reserved()); storage->set_mapping_changed_listener(&_listener); } @@ -57,19 +42,17 @@ _bm->clear_range(mr); } -void G1CMBitMap::clear_range(MemRegion mr) { - MemRegion intersection = mr.intersection(_covered); - assert(!intersection.is_empty(), - "Given range from " PTR_FORMAT " to " PTR_FORMAT " is completely outside the heap", - p2i(mr.start()), p2i(mr.end())); - // convert address range into offset range - _bm.at_put_range(addr_to_offset(intersection.start()), - addr_to_offset(intersection.end()), false); -} - void G1CMBitMap::clear_region(HeapRegion* region) { if (!region->is_empty()) { MemRegion mr(region->bottom(), region->top()); clear_range(mr); } } + +#ifdef ASSERT +void G1CMBitMap::check_mark(HeapWord* addr) { + assert(G1CollectedHeap::heap()->is_in_exact(addr), + "Trying to access bitmap " PTR_FORMAT " for address " PTR_FORMAT " not in the heap.", + p2i(this), p2i(addr)); +} +#endif