src/share/vm/gc_interface/collectedHeap.cpp

Print this page

        

*** 54,63 **** --- 54,66 ---- int CollectedHeap::_fire_out_of_memory_count = 0; #endif size_t CollectedHeap::_filler_array_max_size = 0; + const char* CollectedHeap::OverflowMessage + = "The size of the object heap + perm gen exceeds the maximum representable size"; + template <> void EventLogBase<GCMessage>::print(outputStream* st, GCMessage& m) { st->print_cr("GC heap %s", m.is_before ? "before" : "after"); st->print_raw(m); }
*** 178,187 **** --- 181,210 ---- #else assert(_defer_initial_card_mark == false, "Who would set it?"); #endif } + size_t CollectedHeap::add_and_check_overflow(size_t total, size_t size) { + assert(size >= 0, "must be"); + size_t result = total + size; + if (result < size) { + // We must have overflowed + vm_exit_during_initialization(CollectedHeap::OverflowMessage); + } + return result; + } + + size_t CollectedHeap::round_up_and_check_overflow(size_t total, size_t size) { + assert(size >= 0, "must be"); + size_t result = round_to(total, size); + if (result < size) { + // We must have overflowed + vm_exit_during_initialization(CollectedHeap::OverflowMessage); + } + return result; + } + #ifndef PRODUCT void CollectedHeap::check_for_bad_heap_word_value(HeapWord* addr, size_t size) { if (CheckMemoryInitialization && ZapUnusedHeapArea) { for (size_t slot = 0; slot < size; slot += 1) { assert((*(intptr_t*) (addr + slot)) != ((intptr_t) badHeapWordVal),