hotspot/src/share/vm/gc_implementation/g1/heapRegion.cpp
changeset 29697 92501504191b
parent 29681 e96b344b2c42
child 29698 9be8d1b0dfdc
equal deleted inserted replaced
29696:01571dfab5be 29697:92501504191b
   104 size_t HeapRegion::max_region_size() {
   104 size_t HeapRegion::max_region_size() {
   105   return HeapRegionBounds::max_size();
   105   return HeapRegionBounds::max_size();
   106 }
   106 }
   107 
   107 
   108 void HeapRegion::setup_heap_region_size(size_t initial_heap_size, size_t max_heap_size) {
   108 void HeapRegion::setup_heap_region_size(size_t initial_heap_size, size_t max_heap_size) {
   109   uintx region_size = G1HeapRegionSize;
   109   size_t region_size = G1HeapRegionSize;
   110   if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
   110   if (FLAG_IS_DEFAULT(G1HeapRegionSize)) {
   111     size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
   111     size_t average_heap_size = (initial_heap_size + max_heap_size) / 2;
   112     region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(),
   112     region_size = MAX2(average_heap_size / HeapRegionBounds::target_number(),
   113                        (uintx) HeapRegionBounds::min_size());
   113                        HeapRegionBounds::min_size());
   114   }
   114   }
   115 
   115 
   116   int region_size_log = log2_long((jlong) region_size);
   116   int region_size_log = log2_long((jlong) region_size);
   117   // Recalculate the region size to make sure it's a power of
   117   // Recalculate the region size to make sure it's a power of
   118   // 2. This means that region_size is the largest power of 2 that's
   118   // 2. This means that region_size is the largest power of 2 that's
   119   // <= what we've calculated so far.
   119   // <= what we've calculated so far.
   120   region_size = ((uintx)1 << region_size_log);
   120   region_size = ((size_t)1 << region_size_log);
   121 
   121 
   122   // Now make sure that we don't go over or under our limits.
   122   // Now make sure that we don't go over or under our limits.
   123   if (region_size < HeapRegionBounds::min_size()) {
   123   if (region_size < HeapRegionBounds::min_size()) {
   124     region_size = HeapRegionBounds::min_size();
   124     region_size = HeapRegionBounds::min_size();
   125   } else if (region_size > HeapRegionBounds::max_size()) {
   125   } else if (region_size > HeapRegionBounds::max_size()) {
   137   LogOfHRGrainWords = LogOfHRGrainBytes - LogHeapWordSize;
   137   LogOfHRGrainWords = LogOfHRGrainBytes - LogHeapWordSize;
   138 
   138 
   139   guarantee(GrainBytes == 0, "we should only set it once");
   139   guarantee(GrainBytes == 0, "we should only set it once");
   140   // The cast to int is safe, given that we've bounded region_size by
   140   // The cast to int is safe, given that we've bounded region_size by
   141   // MIN_REGION_SIZE and MAX_REGION_SIZE.
   141   // MIN_REGION_SIZE and MAX_REGION_SIZE.
   142   GrainBytes = (size_t)region_size;
   142   GrainBytes = region_size;
   143 
   143 
   144   guarantee(GrainWords == 0, "we should only set it once");
   144   guarantee(GrainWords == 0, "we should only set it once");
   145   GrainWords = GrainBytes >> LogHeapWordSize;
   145   GrainWords = GrainBytes >> LogHeapWordSize;
   146   guarantee((size_t) 1 << LogOfHRGrainWords == GrainWords, "sanity");
   146   guarantee((size_t) 1 << LogOfHRGrainWords == GrainWords, "sanity");
   147 
   147