src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

Print this page




1724          "Flag should have been handled and cleared prior to this point");
1725 
1726   // What else?  We might try synchronous finalization later.  If the total
1727   // space available is large enough for the allocation, then a more
1728   // complete compaction phase than we've tried so far might be
1729   // appropriate.
1730   assert(*succeeded, "sanity");
1731   return NULL;
1732 }
1733 
1734 // Attempting to expand the heap sufficiently
1735 // to support an allocation of the given "word_size".  If
1736 // successful, perform the allocation and return the address of the
1737 // allocated block, or else "NULL".
1738 
1739 HeapWord* G1CollectedHeap::expand_and_allocate(size_t word_size) {
1740   assert_at_safepoint(true /* should_be_vm_thread */);
1741 
1742   verify_region_sets_optional();
1743 
1744   size_t expand_bytes = MAX2(word_size * HeapWordSize, MinHeapDeltaBytes);
1745   ergo_verbose1(ErgoHeapSizing,
1746                 "attempt heap expansion",
1747                 ergo_format_reason("allocation request failed")
1748                 ergo_format_byte("allocation request"),
1749                 word_size * HeapWordSize);
1750   if (expand(expand_bytes)) {
1751     _hrs.verify_optional();
1752     verify_region_sets_optional();
1753     return attempt_allocation_at_safepoint(word_size,
1754                                  false /* expect_null_mutator_alloc_region */);
1755   }
1756   return NULL;
1757 }
1758 
1759 void G1CollectedHeap::update_committed_space(HeapWord* old_end,
1760                                              HeapWord* new_end) {
1761   assert(old_end != new_end, "don't call this otherwise");
1762   assert((HeapWord*) _g1_storage.high() == new_end, "invariant");
1763 
1764   // Update the committed mem region.




1724          "Flag should have been handled and cleared prior to this point");
1725 
1726   // What else?  We might try synchronous finalization later.  If the total
1727   // space available is large enough for the allocation, then a more
1728   // complete compaction phase than we've tried so far might be
1729   // appropriate.
1730   assert(*succeeded, "sanity");
1731   return NULL;
1732 }
1733 
1734 // Attempting to expand the heap sufficiently
1735 // to support an allocation of the given "word_size".  If
1736 // successful, perform the allocation and return the address of the
1737 // allocated block, or else "NULL".
1738 
1739 HeapWord* G1CollectedHeap::expand_and_allocate(size_t word_size) {
1740   assert_at_safepoint(true /* should_be_vm_thread */);
1741 
1742   verify_region_sets_optional();
1743 
1744   size_t expand_bytes = MAX2(word_size * HeapWordSize, (size_t)MinHeapDeltaBytes);
1745   ergo_verbose1(ErgoHeapSizing,
1746                 "attempt heap expansion",
1747                 ergo_format_reason("allocation request failed")
1748                 ergo_format_byte("allocation request"),
1749                 word_size * HeapWordSize);
1750   if (expand(expand_bytes)) {
1751     _hrs.verify_optional();
1752     verify_region_sets_optional();
1753     return attempt_allocation_at_safepoint(word_size,
1754                                  false /* expect_null_mutator_alloc_region */);
1755   }
1756   return NULL;
1757 }
1758 
1759 void G1CollectedHeap::update_committed_space(HeapWord* old_end,
1760                                              HeapWord* new_end) {
1761   assert(old_end != new_end, "don't call this otherwise");
1762   assert((HeapWord*) _g1_storage.high() == new_end, "invariant");
1763 
1764   // Update the committed mem region.