< prev index next >
src/share/vm/gc/shared/threadLocalAllocBuffer.cpp
Print this page
rev 13139 : [mq]: heap7
rev 13140 : [mq]: heapz8
@@ -125,11 +125,12 @@
set_actual_end(NULL);
set_slow_path_end(NULL);
}
}
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");
}
void ThreadLocalAllocBuffer::resize_all_tlabs() {
if (ResizeTLAB) {
@@ -325,16 +326,24 @@
size_t heap_words_remaining = _end - _top;
size_t bytes_left = bytes_until_sample();
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() {
return (Thread*)(((char *)this) +
in_bytes(start_offset()) -
< prev index next >