--- old/src/hotspot/share/gc/shared/threadLocalAllocBuffer.hpp 2018-05-11 17:07:52.158072537 +0200 +++ new/src/hotspot/share/gc/shared/threadLocalAllocBuffer.hpp 2018-05-11 17:07:51.883060562 +0200 @@ -79,6 +79,8 @@ size_t remaining() const { return end() == NULL ? 0 : pointer_delta(hard_end(), top()); } + bool contains(HeapWord* obj, size_t size) { return (obj >= start()) && (obj + size <= top()); } + // Make parsable and release it. void reset(); @@ -129,6 +131,9 @@ // Allocate size HeapWords. The memory is NOT initialized to zero. inline HeapWord* allocate(size_t size); + // Undo last allocation. + inline bool undo_allocate(HeapWord* obj, size_t size); + // Reserve space at the end of TLAB static size_t end_reserve() { int reserve_size = typeArrayOopDesc::header_size(T_INT);