1.1 --- a/src/share/vm/utilities/array.cpp Wed Jun 27 15:23:36 2012 +0200 1.2 +++ b/src/share/vm/utilities/array.cpp Thu Jun 28 17:03:16 2012 -0400 1.3 @@ -49,7 +49,7 @@ 1.4 void ResourceArray::sort(size_t esize, ftype f) { 1.5 if (!is_empty()) qsort(_data, length(), esize, f); 1.6 } 1.7 -void CHeapArray::sort(size_t esize, ftype f) { 1.8 +template <MEMFLAGS F> void CHeapArray<F>::sort(size_t esize, ftype f) { 1.9 if (!is_empty()) qsort(_data, length(), esize, f); 1.10 } 1.11 1.12 @@ -70,14 +70,14 @@ 1.13 } 1.14 1.15 1.16 -void CHeapArray::expand(size_t esize, int i, int& size) { 1.17 +template <MEMFLAGS F> void CHeapArray<F>::expand(size_t esize, int i, int& size) { 1.18 // determine new size 1.19 if (size == 0) size = 4; // prevent endless loop 1.20 while (i >= size) size *= 2; 1.21 // allocate and initialize new data section 1.22 - void* data = NEW_C_HEAP_ARRAY(char*, esize * size); 1.23 + void* data = NEW_C_HEAP_ARRAY(char*, esize * size, F); 1.24 memcpy(data, _data, esize * length()); 1.25 - FREE_C_HEAP_ARRAY(char*, _data); 1.26 + FREE_C_HEAP_ARRAY(char*, _data, F); 1.27 _data = data; 1.28 } 1.29 1.30 @@ -91,7 +91,7 @@ 1.31 memmove(dst, src, cnt); 1.32 } 1.33 1.34 -void CHeapArray::remove_at(size_t esize, int i) { 1.35 +template <MEMFLAGS F> void CHeapArray<F>::remove_at(size_t esize, int i) { 1.36 assert(0 <= i && i < length(), "index out of bounds"); 1.37 _length--; 1.38 void* dst = (char*)_data + i*esize;