--- old/src/share/vm/gc/shared/threadLocalAllocBuffer.cpp 2017-06-30 13:52:10.043467733 -0700 +++ new/src/share/vm/gc/shared/threadLocalAllocBuffer.cpp 2017-06-30 13:52:09.899468252 -0700 @@ -127,7 +127,8 @@ } } assert(!(retire || ZeroTLAB) || - (start() == NULL && end() == NULL && top() == NULL), + (start() == NULL && end() == NULL && top() == NULL && + actual_end() == NULL && slow_path_end() == NULL), "TLAB must be reset"); } @@ -327,12 +328,20 @@ size_t words_until_sample = bytes_left / HeapWordSize; if (heap_words_remaining > words_until_sample) { - set_end(_top + words_until_sample); + HeapWord* new_end = _top + words_until_sample; + set_end(new_end); + set_slow_path_end(new_end); set_bytes_until_sample(0); } else { bytes_left -= heap_words_remaining * HeapWordSize; set_bytes_until_sample(bytes_left); } + + log_trace(gc, tlab)("TLAB picked next sample: thread: " INTPTR_FORMAT " [id: %2d]" + " start: %p top: %p end: %p actual_end: %p slow_path_end: %p", + p2i(myThread()), myThread()->osthread()->thread_id(), + start(), top(), end(), + actual_end(), slow_path_end()); } Thread* ThreadLocalAllocBuffer::myThread() {