< prev index next >

src/hotspot/share/gc/g1/g1CollectedHeap.cpp

Print this page
rev 52719 : [mq]: 8159440-marking-of-promoted-objects-to-concurrent


4503   if (!has_more_regions(dest)) {
4504     return NULL;
4505   }
4506 
4507   const bool is_survivor = dest.is_young();
4508 
4509   HeapRegion* new_alloc_region = new_region(word_size,
4510                                             !is_survivor,
4511                                             true /* do_expand */);
4512   if (new_alloc_region != NULL) {
4513     if (is_survivor) {
4514       new_alloc_region->set_survivor();
4515       _survivor.add(new_alloc_region);
4516       _verifier->check_bitmaps("Survivor Region Allocation", new_alloc_region);
4517     } else {
4518       new_alloc_region->set_old();
4519       _verifier->check_bitmaps("Old Region Allocation", new_alloc_region);
4520     }
4521     _g1_policy->remset_tracker()->update_at_allocate(new_alloc_region);
4522     _hr_printer.alloc(new_alloc_region);
4523     bool during_im = collector_state()->in_initial_mark_gc();
4524     new_alloc_region->note_start_of_copying(during_im);
4525     return new_alloc_region;
4526   }
4527   return NULL;
4528 }
4529 
4530 void G1CollectedHeap::retire_gc_alloc_region(HeapRegion* alloc_region,
4531                                              size_t allocated_bytes,
4532                                              InCSetState dest) {
4533   bool during_im = collector_state()->in_initial_mark_gc();
4534   alloc_region->note_end_of_copying(during_im);
4535   g1_policy()->record_bytes_copied_during_gc(allocated_bytes);
4536   if (dest.is_old()) {
4537     old_set_add(alloc_region);





4538   }
4539   _hr_printer.retire(alloc_region);
4540 }
4541 
4542 HeapRegion* G1CollectedHeap::alloc_highest_free_region() {
4543   bool expanded = false;
4544   uint index = _hrm.find_highest_free(&expanded);
4545 
4546   if (index != G1_NO_HRM_INDEX) {
4547     if (expanded) {
4548       log_debug(gc, ergo, heap)("Attempt heap expansion (requested address range outside heap bounds). region size: " SIZE_FORMAT "B",
4549                                 HeapRegion::GrainWords * HeapWordSize);
4550     }
4551     _hrm.allocate_free_regions_starting_at(index, 1);
4552     return region_at(index);
4553   }
4554   return NULL;
4555 }
4556 
4557 // Optimized nmethod scanning




4503   if (!has_more_regions(dest)) {
4504     return NULL;
4505   }
4506 
4507   const bool is_survivor = dest.is_young();
4508 
4509   HeapRegion* new_alloc_region = new_region(word_size,
4510                                             !is_survivor,
4511                                             true /* do_expand */);
4512   if (new_alloc_region != NULL) {
4513     if (is_survivor) {
4514       new_alloc_region->set_survivor();
4515       _survivor.add(new_alloc_region);
4516       _verifier->check_bitmaps("Survivor Region Allocation", new_alloc_region);
4517     } else {
4518       new_alloc_region->set_old();
4519       _verifier->check_bitmaps("Old Region Allocation", new_alloc_region);
4520     }
4521     _g1_policy->remset_tracker()->update_at_allocate(new_alloc_region);
4522     _hr_printer.alloc(new_alloc_region);


4523     return new_alloc_region;
4524   }
4525   return NULL;
4526 }
4527 
4528 void G1CollectedHeap::retire_gc_alloc_region(HeapRegion* alloc_region,
4529                                              size_t allocated_bytes,
4530                                              InCSetState dest) {


4531   g1_policy()->record_bytes_copied_during_gc(allocated_bytes);
4532   if (dest.is_old()) {
4533     old_set_add(alloc_region);
4534   }
4535 
4536   bool const during_im = collector_state()->in_initial_mark_gc();
4537   if (during_im && allocated_bytes > 0) {
4538     _cm->root_regions()->add(alloc_region);
4539   }
4540   _hr_printer.retire(alloc_region);
4541 }
4542 
4543 HeapRegion* G1CollectedHeap::alloc_highest_free_region() {
4544   bool expanded = false;
4545   uint index = _hrm.find_highest_free(&expanded);
4546 
4547   if (index != G1_NO_HRM_INDEX) {
4548     if (expanded) {
4549       log_debug(gc, ergo, heap)("Attempt heap expansion (requested address range outside heap bounds). region size: " SIZE_FORMAT "B",
4550                                 HeapRegion::GrainWords * HeapWordSize);
4551     }
4552     _hrm.allocate_free_regions_starting_at(index, 1);
4553     return region_at(index);
4554   }
4555   return NULL;
4556 }
4557 
4558 // Optimized nmethod scanning


< prev index next >