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.
|