diff --git a/src/hotspot/share/gc/shared/collectedHeap.cpp b/src/hotspot/share/gc/shared/collectedHeap.cpp index 18a5d69..def6190 100644 --- a/src/hotspot/share/gc/shared/collectedHeap.cpp +++ b/src/hotspot/share/gc/shared/collectedHeap.cpp @@ -367,13 +367,25 @@ void CollectedHeap::check_for_valid_allocation_state() { HeapWord* CollectedHeap::obj_allocate_raw(Klass* klass, size_t size, bool* gc_overhead_limit_was_exceeded, TRAPS) { + HeapWord* result = NULL; if (UseTLAB) { - HeapWord* result = allocate_from_tlab(klass, size, THREAD); + result = allocate_from_tlab(klass, size, THREAD); if (result != NULL) { return result; } } - return Universe::heap()->mem_allocate(size, gc_overhead_limit_was_exceeded); + result = Universe::heap()->mem_allocate(size, gc_overhead_limit_was_exceeded); + if (result == NULL) { + return result; + } + + NOT_PRODUCT(Universe::heap()->check_for_non_bad_heap_word_value(result, size)); + assert(!HAS_PENDING_EXCEPTION, + "Unexpected exception, will result in uninitialized storage"); + THREAD->incr_allocated_bytes(size * HeapWordSize); + + AllocTracer::send_allocation_outside_tlab(klass, result, size * HeapWordSize, THREAD); + return result; } HeapWord* CollectedHeap::allocate_from_tlab_slow(Klass* klass, size_t size, TRAPS) { diff --git a/src/hotspot/share/gc/shared/collectedHeap.inline.hpp b/src/hotspot/share/gc/shared/collectedHeap.inline.hpp index 6c2893d..8e69131 100644 --- a/src/hotspot/share/gc/shared/collectedHeap.inline.hpp +++ b/src/hotspot/share/gc/shared/collectedHeap.inline.hpp @@ -142,14 +142,6 @@ HeapWord* CollectedHeap::common_mem_allocate_noinit(Klass* klass, size_t size, T HeapWord* result = heap->obj_allocate_raw(klass, size, &gc_overhead_limit_was_exceeded, THREAD); if (result != NULL) { - NOT_PRODUCT(Universe::heap()-> - check_for_non_bad_heap_word_value(result, size)); - assert(!HAS_PENDING_EXCEPTION, - "Unexpected exception, will result in uninitialized storage"); - THREAD->incr_allocated_bytes(size * HeapWordSize); - - AllocTracer::send_allocation_outside_tlab(klass, result, size * HeapWordSize, THREAD); - return result; }