# HG changeset patch # User johnc # Date 1317829450 25200 # Node ID 65a8ff39a6da51719cff071980d9ffb8be6201cb # Parent c63b928b212bc0ea2d2db473e29044d1df16fe9a 7095194: G1: HeapRegion::GrainBytes, GrainWords, and CardsPerRegion should be size_t Summary: Declare GrainBytes, GrainWords, and CardsPerRegion as size_t. Reviewed-by: jcoomes, tonyp, jmasa diff -r c63b928b212b -r 65a8ff39a6da src/share/vm/gc_implementation/g1/concurrentMark.cpp --- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp Mon Sep 12 16:09:50 2011 +0200 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp Wed Oct 05 08:44:10 2011 -0700 @@ -4573,7 +4573,7 @@ G1PPRL_SUM_BYTE_FORMAT("region-size"), g1_committed.start(), g1_committed.end(), g1_reserved.start(), g1_reserved.end(), - (size_t)HeapRegion::GrainBytes); + HeapRegion::GrainBytes); _out->print_cr(G1PPRL_LINE_PREFIX); _out->print_cr(G1PPRL_LINE_PREFIX G1PPRL_TYPE_H_FORMAT @@ -4604,7 +4604,7 @@ // The > 0 check is to deal with the prev and next live bytes which // could be 0. if (*hum_bytes > 0) { - bytes = MIN2((size_t) HeapRegion::GrainBytes, *hum_bytes); + bytes = MIN2(HeapRegion::GrainBytes, *hum_bytes); *hum_bytes -= bytes; } return bytes; diff -r c63b928b212b -r 65a8ff39a6da src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Mon Sep 12 16:09:50 2011 +0200 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Oct 05 08:44:10 2011 -0700 @@ -552,8 +552,7 @@ } HeapRegion* G1CollectedHeap::new_region(size_t word_size, bool do_expand) { - assert(!isHumongous(word_size) || - word_size <= (size_t) HeapRegion::GrainWords, + assert(!isHumongous(word_size) || word_size <= HeapRegion::GrainWords, "the only time we use this to allocate a humongous region is " "when we are allocating a single humongous region"); @@ -1170,7 +1169,7 @@ if (!hr->isHumongous()) { _hr_printer->post_compaction(hr, G1HRPrinter::Old); } else if (hr->startsHumongous()) { - if (hr->capacity() == (size_t) HeapRegion::GrainBytes) { + if (hr->capacity() == HeapRegion::GrainBytes) { // single humongous region _hr_printer->post_compaction(hr, G1HRPrinter::SingleHumongous); } else { @@ -1971,7 +1970,7 @@ size_t max_cards_per_region = ((size_t)1 << (sizeof(CardIdx_t)*BitsPerByte-1)) - 1; guarantee(HeapRegion::CardsPerRegion > 0, "make sure it's initialized"); - guarantee((size_t) HeapRegion::CardsPerRegion < max_cards_per_region, + guarantee(HeapRegion::CardsPerRegion < max_cards_per_region, "too many cards per region"); HeapRegionSet::set_unrealistically_long_length(max_regions() + 1); @@ -3051,8 +3050,7 @@ _g1_storage.high(), _g1_storage.high_boundary()); st->cr(); - st->print(" region size " SIZE_FORMAT "K, ", - HeapRegion::GrainBytes/K); + st->print(" region size " SIZE_FORMAT "K, ", HeapRegion::GrainBytes / K); size_t young_regions = _young_list->length(); st->print(SIZE_FORMAT " young (" SIZE_FORMAT "K), ", young_regions, young_regions * HeapRegion::GrainBytes / K); diff -r c63b928b212b -r 65a8ff39a6da src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp --- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Mon Sep 12 16:09:50 2011 +0200 +++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp Wed Oct 05 08:44:10 2011 -0700 @@ -298,10 +298,10 @@ } // Verify PLAB sizes - const uint region_size = HeapRegion::GrainWords; + const size_t region_size = HeapRegion::GrainWords; if (YoungPLABSize > region_size || OldPLABSize > region_size) { char buffer[128]; - jio_snprintf(buffer, sizeof(buffer), "%sPLABSize should be at most %u", + jio_snprintf(buffer, sizeof(buffer), "%sPLABSize should be at most "SIZE_FORMAT, OldPLABSize > region_size ? "Old" : "Young", region_size); vm_exit_during_initialization(buffer); } diff -r c63b928b212b -r 65a8ff39a6da src/share/vm/gc_implementation/g1/heapRegion.cpp --- a/src/share/vm/gc_implementation/g1/heapRegion.cpp Mon Sep 12 16:09:50 2011 +0200 +++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp Wed Oct 05 08:44:10 2011 -0700 @@ -33,11 +33,11 @@ #include "memory/iterator.hpp" #include "oops/oop.inline.hpp" -int HeapRegion::LogOfHRGrainBytes = 0; -int HeapRegion::LogOfHRGrainWords = 0; -int HeapRegion::GrainBytes = 0; -int HeapRegion::GrainWords = 0; -int HeapRegion::CardsPerRegion = 0; +int HeapRegion::LogOfHRGrainBytes = 0; +int HeapRegion::LogOfHRGrainWords = 0; +size_t HeapRegion::GrainBytes = 0; +size_t HeapRegion::GrainWords = 0; +size_t HeapRegion::CardsPerRegion = 0; HeapRegionDCTOC::HeapRegionDCTOC(G1CollectedHeap* g1, HeapRegion* hr, OopClosure* cl, @@ -322,11 +322,11 @@ guarantee(GrainBytes == 0, "we should only set it once"); // The cast to int is safe, given that we've bounded region_size by // MIN_REGION_SIZE and MAX_REGION_SIZE. - GrainBytes = (int) region_size; + GrainBytes = (size_t)region_size; guarantee(GrainWords == 0, "we should only set it once"); GrainWords = GrainBytes >> LogHeapWordSize; - guarantee(1 << LogOfHRGrainWords == GrainWords, "sanity"); + guarantee((size_t)(1 << LogOfHRGrainWords) == GrainWords, "sanity"); guarantee(CardsPerRegion == 0, "we should only set it once"); CardsPerRegion = GrainBytes >> CardTableModRefBS::card_shift; @@ -379,8 +379,7 @@ void HeapRegion::par_clear() { assert(used() == 0, "the region should have been already cleared"); - assert(capacity() == (size_t) HeapRegion::GrainBytes, - "should be back to normal"); + assert(capacity() == HeapRegion::GrainBytes, "should be back to normal"); HeapRegionRemSet* hrrs = rem_set(); hrrs->clear(); CardTableModRefBS* ct_bs = @@ -436,7 +435,7 @@ assert(end() == _orig_end, "sanity"); } - assert(capacity() == (size_t) HeapRegion::GrainBytes, "pre-condition"); + assert(capacity() == HeapRegion::GrainBytes, "pre-condition"); _humongous_type = NotHumongous; _humongous_start_region = NULL; } diff -r c63b928b212b -r 65a8ff39a6da src/share/vm/gc_implementation/g1/heapRegion.hpp --- a/src/share/vm/gc_implementation/g1/heapRegion.hpp Mon Sep 12 16:09:50 2011 +0200 +++ b/src/share/vm/gc_implementation/g1/heapRegion.hpp Wed Oct 05 08:44:10 2011 -0700 @@ -346,16 +346,12 @@ G1BlockOffsetSharedArray* sharedOffsetArray, MemRegion mr, bool is_zeroed); - static int LogOfHRGrainBytes; - static int LogOfHRGrainWords; - // The normal type of these should be size_t. However, they used to - // be members of an enum before and they are assumed by the - // compilers to be ints. To avoid going and fixing all their uses, - // I'm declaring them as ints. I'm not anticipating heap region - // sizes to reach anywhere near 2g, so using an int here is safe. - static int GrainBytes; - static int GrainWords; - static int CardsPerRegion; + static int LogOfHRGrainBytes; + static int LogOfHRGrainWords; + + static size_t GrainBytes; + static size_t GrainWords; + static size_t CardsPerRegion; static size_t align_up_to_region_byte_size(size_t sz) { return (sz + (size_t) GrainBytes - 1) & diff -r c63b928b212b -r 65a8ff39a6da src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp --- a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Mon Sep 12 16:09:50 2011 +0200 +++ b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp Wed Oct 05 08:44:10 2011 -0700 @@ -148,7 +148,7 @@ CardIdx_t from_card = (CardIdx_t) hw_offset >> (CardTableModRefBS::card_shift - LogHeapWordSize); - assert(0 <= from_card && from_card < HeapRegion::CardsPerRegion, + assert(0 <= from_card && (size_t)from_card < HeapRegion::CardsPerRegion, "Must be in range."); add_card_work(from_card, par); } @@ -639,7 +639,7 @@ uintptr_t(from_hr->bottom()) >> CardTableModRefBS::card_shift; CardIdx_t card_index = from_card - from_hr_bot_card_index; - assert(0 <= card_index && card_index < HeapRegion::CardsPerRegion, + assert(0 <= card_index && (size_t)card_index < HeapRegion::CardsPerRegion, "Must be in range."); if (G1HRRSUseSparseTable && _sparse_table.add_card(from_hrs_ind, card_index)) { @@ -1066,7 +1066,7 @@ uintptr_t(hr->bottom()) >> CardTableModRefBS::card_shift; assert(from_card >= hr_bot_card_index, "Inv"); CardIdx_t card_index = from_card - hr_bot_card_index; - assert(0 <= card_index && card_index < HeapRegion::CardsPerRegion, + assert(0 <= card_index && (size_t)card_index < HeapRegion::CardsPerRegion, "Must be in range."); return _sparse_table.contains_card(hr_ind, card_index); } @@ -1191,7 +1191,7 @@ _is = Sparse; // Set these values so that we increment to the first region. _coarse_cur_region_index = -1; - _coarse_cur_region_cur_card = (HeapRegion::CardsPerRegion-1);; + _coarse_cur_region_cur_card = (HeapRegion::CardsPerRegion-1); _cur_region_cur_card = 0; @@ -1270,7 +1270,7 @@ bool HeapRegionRemSetIterator::fine_has_next() { return _fine_cur_prt != NULL && - _cur_region_cur_card < (size_t) HeapRegion::CardsPerRegion; + _cur_region_cur_card < HeapRegion::CardsPerRegion; } bool HeapRegionRemSetIterator::has_next(size_t& card_index) { diff -r c63b928b212b -r 65a8ff39a6da src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp --- a/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Mon Sep 12 16:09:50 2011 +0200 +++ b/src/share/vm/gc_implementation/g1/heapRegionRemSet.hpp Wed Oct 05 08:44:10 2011 -0700 @@ -395,8 +395,8 @@ // Coarse table iteration fields: // Current region index; - int _coarse_cur_region_index; - int _coarse_cur_region_cur_card; + int _coarse_cur_region_index; + size_t _coarse_cur_region_cur_card; bool coarse_has_next(size_t& card_index); diff -r c63b928b212b -r 65a8ff39a6da src/share/vm/gc_implementation/g1/vmStructs_g1.hpp --- a/src/share/vm/gc_implementation/g1/vmStructs_g1.hpp Mon Sep 12 16:09:50 2011 +0200 +++ b/src/share/vm/gc_implementation/g1/vmStructs_g1.hpp Wed Oct 05 08:44:10 2011 -0700 @@ -31,7 +31,7 @@ #define VM_STRUCTS_G1(nonstatic_field, static_field) \ \ - static_field(HeapRegion, GrainBytes, int) \ + static_field(HeapRegion, GrainBytes, size_t) \ \ nonstatic_field(HeapRegionSeq, _regions, HeapRegion**) \ nonstatic_field(HeapRegionSeq, _length, size_t) \