< prev index next >

src/share/vm/gc/shenandoah/shenandoahHeap.cpp

Print this page




 127       size_t start = r->region_number()       * ShenandoahHeapRegion::RegionSizeBytes / CMBitMap::heap_map_factor();
 128       size_t end   = (r->region_number() + 1) * ShenandoahHeapRegion::RegionSizeBytes / CMBitMap::heap_map_factor();
 129       assert (end <= _bitmap_size, "end is sane: " SIZE_FORMAT " < " SIZE_FORMAT, end, _bitmap_size);
 130 
 131       log_trace(gc, heap)("Pretouch bitmap under region " SIZE_FORMAT ": " PTR_FORMAT " -> " PTR_FORMAT,
 132                           r->region_number(), p2i(_bitmap0_base + start), p2i(_bitmap0_base + end));
 133       os::pretouch_memory(_bitmap0_base + start, _bitmap0_base + end, _page_size);
 134 
 135       log_trace(gc, heap)("Pretouch bitmap under region " SIZE_FORMAT ": " PTR_FORMAT " -> " PTR_FORMAT,
 136                           r->region_number(), p2i(_bitmap1_base + start), p2i(_bitmap1_base + end));
 137       os::pretouch_memory(_bitmap1_base + start, _bitmap1_base + end, _page_size);
 138 
 139       r = _regions->claim_next();
 140     }
 141   }
 142 };
 143 
 144 jint ShenandoahHeap::initialize() {
 145   CollectedHeap::pre_initialize();
 146 


 147   size_t init_byte_size = collector_policy()->initial_heap_byte_size();
 148   size_t max_byte_size = collector_policy()->max_heap_byte_size();
 149 
 150   Universe::check_alignment(max_byte_size,
 151                             ShenandoahHeapRegion::RegionSizeBytes,
 152                             "shenandoah heap");
 153   Universe::check_alignment(init_byte_size,
 154                             ShenandoahHeapRegion::RegionSizeBytes,
 155                             "shenandoah heap");
 156 
 157   ReservedSpace heap_rs = Universe::reserve_heap(max_byte_size,
 158                                                  Arguments::conservative_max_heap_alignment());
 159   initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*) (heap_rs.base() + heap_rs.size()));
 160 
 161   set_barrier_set(new ShenandoahBarrierSet(this));
 162   ReservedSpace pgc_rs = heap_rs.first_part(max_byte_size);
 163   _storage.initialize(pgc_rs, init_byte_size);
 164 
 165   _num_regions = init_byte_size / ShenandoahHeapRegion::RegionSizeBytes;
 166   _max_regions = max_byte_size / ShenandoahHeapRegion::RegionSizeBytes;


 752                              (words * HeapWordSize) / K, p2i(result), r->region_number());
 753   } else {
 754     log_debug(gc, humongous)("allocating humongous object of size: "SIZE_FORMAT" KB at location "PTR_FORMAT" failed",
 755                              (words * HeapWordSize) / K, p2i(result));
 756   }
 757 
 758 
 759   return result;
 760 
 761 }
 762 
 763 HeapWord*  ShenandoahHeap::mem_allocate(size_t size,
 764                                         bool*  gc_overhead_limit_was_exceeded) {
 765 
 766 #ifdef ASSERT
 767   if (ShenandoahVerify && _numAllocs > 1000000) {
 768     _numAllocs = 0;
 769   }
 770   _numAllocs++;
 771 #endif
 772   HeapWord* filler = allocate_memory(BrooksPointer::word_size() + size, false);
 773   HeapWord* result = filler + BrooksPointer::word_size();
 774   if (filler != NULL) {
 775     BrooksPointer::initialize(oop(result));
 776     _bytes_allocated_since_cm += size * HeapWordSize;
 777 
 778     assert(! in_collection_set(result), "never allocate in targetted region");
 779     return result;
 780   } else {
 781     /*
 782     tty->print_cr("Out of memory. Requested number of words: "SIZE_FORMAT" used heap: "INT64_FORMAT", bytes allocated since last CM: "INT64_FORMAT,
 783                   size, used(), _bytes_allocated_since_cm);
 784     {
 785       print_heap_regions();
 786       tty->print("Printing "SIZE_FORMAT" free regions:\n", _free_regions->count());
 787       _free_regions->print();
 788     }
 789     */
 790     return NULL;
 791   }
 792 }




 127       size_t start = r->region_number()       * ShenandoahHeapRegion::RegionSizeBytes / CMBitMap::heap_map_factor();
 128       size_t end   = (r->region_number() + 1) * ShenandoahHeapRegion::RegionSizeBytes / CMBitMap::heap_map_factor();
 129       assert (end <= _bitmap_size, "end is sane: " SIZE_FORMAT " < " SIZE_FORMAT, end, _bitmap_size);
 130 
 131       log_trace(gc, heap)("Pretouch bitmap under region " SIZE_FORMAT ": " PTR_FORMAT " -> " PTR_FORMAT,
 132                           r->region_number(), p2i(_bitmap0_base + start), p2i(_bitmap0_base + end));
 133       os::pretouch_memory(_bitmap0_base + start, _bitmap0_base + end, _page_size);
 134 
 135       log_trace(gc, heap)("Pretouch bitmap under region " SIZE_FORMAT ": " PTR_FORMAT " -> " PTR_FORMAT,
 136                           r->region_number(), p2i(_bitmap1_base + start), p2i(_bitmap1_base + end));
 137       os::pretouch_memory(_bitmap1_base + start, _bitmap1_base + end, _page_size);
 138 
 139       r = _regions->claim_next();
 140     }
 141   }
 142 };
 143 
 144 jint ShenandoahHeap::initialize() {
 145   CollectedHeap::pre_initialize();
 146 
 147   BrooksPointer::initial_checks();
 148 
 149   size_t init_byte_size = collector_policy()->initial_heap_byte_size();
 150   size_t max_byte_size = collector_policy()->max_heap_byte_size();
 151 
 152   Universe::check_alignment(max_byte_size,
 153                             ShenandoahHeapRegion::RegionSizeBytes,
 154                             "shenandoah heap");
 155   Universe::check_alignment(init_byte_size,
 156                             ShenandoahHeapRegion::RegionSizeBytes,
 157                             "shenandoah heap");
 158 
 159   ReservedSpace heap_rs = Universe::reserve_heap(max_byte_size,
 160                                                  Arguments::conservative_max_heap_alignment());
 161   initialize_reserved_region((HeapWord*)heap_rs.base(), (HeapWord*) (heap_rs.base() + heap_rs.size()));
 162 
 163   set_barrier_set(new ShenandoahBarrierSet(this));
 164   ReservedSpace pgc_rs = heap_rs.first_part(max_byte_size);
 165   _storage.initialize(pgc_rs, init_byte_size);
 166 
 167   _num_regions = init_byte_size / ShenandoahHeapRegion::RegionSizeBytes;
 168   _max_regions = max_byte_size / ShenandoahHeapRegion::RegionSizeBytes;


 754                              (words * HeapWordSize) / K, p2i(result), r->region_number());
 755   } else {
 756     log_debug(gc, humongous)("allocating humongous object of size: "SIZE_FORMAT" KB at location "PTR_FORMAT" failed",
 757                              (words * HeapWordSize) / K, p2i(result));
 758   }
 759 
 760 
 761   return result;
 762 
 763 }
 764 
 765 HeapWord*  ShenandoahHeap::mem_allocate(size_t size,
 766                                         bool*  gc_overhead_limit_was_exceeded) {
 767 
 768 #ifdef ASSERT
 769   if (ShenandoahVerify && _numAllocs > 1000000) {
 770     _numAllocs = 0;
 771   }
 772   _numAllocs++;
 773 #endif
 774   HeapWord* filler = allocate_memory(size + BrooksPointer::word_size(), false);
 775   HeapWord* result = filler + BrooksPointer::word_size();
 776   if (filler != NULL) {
 777     BrooksPointer::initialize(oop(result));
 778     _bytes_allocated_since_cm += size * HeapWordSize;
 779 
 780     assert(! in_collection_set(result), "never allocate in targetted region");
 781     return result;
 782   } else {
 783     /*
 784     tty->print_cr("Out of memory. Requested number of words: "SIZE_FORMAT" used heap: "INT64_FORMAT", bytes allocated since last CM: "INT64_FORMAT,
 785                   size, used(), _bytes_allocated_since_cm);
 786     {
 787       print_heap_regions();
 788       tty->print("Printing "SIZE_FORMAT" free regions:\n", _free_regions->count());
 789       _free_regions->print();
 790     }
 791     */
 792     return NULL;
 793   }
 794 }


< prev index next >