提交 e14b0cd3 编写于 作者: Y ysr

6808322: ParNew, CMS, G1: ParGCAllocBuffer overflow

Summary: Correct the overflow check in ParGCAllocBuffer::allocate(); simplify ParGCAllocBuffer::undo_allocation().
Reviewed-by: apetrusenko, jcoomes, jmasa, minqi, phh, tonyp
上级 129c791e
...@@ -63,9 +63,8 @@ public: ...@@ -63,9 +63,8 @@ public:
// return NULL. // return NULL.
HeapWord* allocate(size_t word_sz) { HeapWord* allocate(size_t word_sz) {
HeapWord* res = _top; HeapWord* res = _top;
HeapWord* new_top = _top + word_sz; if (pointer_delta(_end, _top) >= word_sz) {
if (new_top <= _end) { _top = _top + word_sz;
_top = new_top;
return res; return res;
} else { } else {
return NULL; return NULL;
...@@ -75,10 +74,9 @@ public: ...@@ -75,10 +74,9 @@ public:
// Undo the last allocation in the buffer, which is required to be of the // Undo the last allocation in the buffer, which is required to be of the
// "obj" of the given "word_sz". // "obj" of the given "word_sz".
void undo_allocation(HeapWord* obj, size_t word_sz) { void undo_allocation(HeapWord* obj, size_t word_sz) {
assert(_top - word_sz >= _bottom assert(pointer_delta(_top, _bottom) >= word_sz, "Bad undo");
&& _top - word_sz == obj, assert(pointer_delta(_top, obj) == word_sz, "Bad undo");
"Bad undo_allocation"); _top = obj;
_top = _top - word_sz;
} }
// The total (word) size of the buffer, including both allocated and // The total (word) size of the buffer, including both allocated and
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册