# HG changeset patch # User johnc # Date 1257534605 28800 # Node ID 9f7d1f6201ab94db8cee70916701151a919f1c66 # Parent 850627f5fd81e0a39ec1cdc399c7f53771defd60 6895788: G1: SATB and update buffer allocation code allocates too much space Summary: The type in the NEW_C_HEAP_ARRRY and FREE_C_HEAP_ARRAY calls in the buffer allocation code was changed from void* to char as the size argument had already been mulitipled by the byte size of an object pointer. Reviewed-by: ysr, tonyp diff -r 850627f5fd81 -r 9f7d1f6201ab src/share/vm/gc_implementation/g1/ptrQueue.cpp --- a/src/share/vm/gc_implementation/g1/ptrQueue.cpp Tue Oct 27 02:42:24 2009 -0700 +++ b/src/share/vm/gc_implementation/g1/ptrQueue.cpp Fri Nov 06 11:10:05 2009 -0800 @@ -107,7 +107,7 @@ res[0] = NULL; return res; } else { - return NEW_C_HEAP_ARRAY(void*, _sz); + return (void**) NEW_C_HEAP_ARRAY(char, _sz); } } @@ -127,7 +127,8 @@ assert(_buf_free_list != NULL, "_buf_free_list_sz must be wrong."); void** head = _buf_free_list; _buf_free_list = (void**)_buf_free_list[0]; - FREE_C_HEAP_ARRAY(void*,head); + FREE_C_HEAP_ARRAY(char, head); + _buf_free_list_sz --; n--; } }