diff -r c559de946c7d -r 483d23cdc9e5 src/hotspot/share/gc/shared/collectedHeap.hpp --- a/src/hotspot/share/gc/shared/collectedHeap.hpp Tue Jun 05 17:23:17 2018 +0200 +++ b/src/hotspot/share/gc/shared/collectedHeap.hpp Wed Jun 06 10:32:59 2018 +0200 @@ -141,8 +141,15 @@ virtual void resize_all_tlabs(); // Allocate from the current thread's TLAB, with broken-out slow path. - inline static HeapWord* allocate_from_tlab(Klass* klass, Thread* thread, size_t size); - static HeapWord* allocate_from_tlab_slow(Klass* klass, Thread* thread, size_t size); + inline static HeapWord* allocate_from_tlab(Klass* klass, size_t size, TRAPS); + static HeapWord* allocate_from_tlab_slow(Klass* klass, size_t size, TRAPS); + + // Raw memory allocation facilities + // The obj and array allocate methods are covers for these methods. + // mem_allocate() should never be + // called to allocate TLABs, only individual objects. + virtual HeapWord* mem_allocate(size_t size, + bool* gc_overhead_limit_was_exceeded) = 0; // Allocate an uninitialized block of the given size, or returns NULL if // this is impossible. @@ -310,12 +317,12 @@ inline static oop array_allocate_nozero(Klass* klass, int size, int length, TRAPS); inline static oop class_allocate(Klass* klass, int size, TRAPS); - // Raw memory allocation facilities - // The obj and array allocate methods are covers for these methods. - // mem_allocate() should never be - // called to allocate TLABs, only individual objects. - virtual HeapWord* mem_allocate(size_t size, - bool* gc_overhead_limit_was_exceeded) = 0; + // Raw memory allocation. This may or may not use TLAB allocations to satisfy the + // allocation. A GC implementation may override this function to satisfy the allocation + // in any way. But the default is to try a TLAB allocation, and otherwise perform + // mem_allocate. + virtual HeapWord* obj_allocate_raw(Klass* klass, size_t size, + bool* gc_overhead_limit_was_exceeded, TRAPS); // Utilities for turning raw memory into filler objects. //