--- a/hotspot/src/share/vm/utilities/array.cpp Wed Jun 27 15:23:36 2012 +0200
+++ b/hotspot/src/share/vm/utilities/array.cpp Thu Jun 28 17:03:16 2012 -0400
@@ -49,7 +49,7 @@
void ResourceArray::sort(size_t esize, ftype f) {
if (!is_empty()) qsort(_data, length(), esize, f);
}
-void CHeapArray::sort(size_t esize, ftype f) {
+template <MEMFLAGS F> void CHeapArray<F>::sort(size_t esize, ftype f) {
if (!is_empty()) qsort(_data, length(), esize, f);
}
@@ -70,14 +70,14 @@
}
-void CHeapArray::expand(size_t esize, int i, int& size) {
+template <MEMFLAGS F> void CHeapArray<F>::expand(size_t esize, int i, int& size) {
// determine new size
if (size == 0) size = 4; // prevent endless loop
while (i >= size) size *= 2;
// allocate and initialize new data section
- void* data = NEW_C_HEAP_ARRAY(char*, esize * size);
+ void* data = NEW_C_HEAP_ARRAY(char*, esize * size, F);
memcpy(data, _data, esize * length());
- FREE_C_HEAP_ARRAY(char*, _data);
+ FREE_C_HEAP_ARRAY(char*, _data, F);
_data = data;
}
@@ -91,7 +91,7 @@
memmove(dst, src, cnt);
}
-void CHeapArray::remove_at(size_t esize, int i) {
+template <MEMFLAGS F> void CHeapArray<F>::remove_at(size_t esize, int i) {
assert(0 <= i && i < length(), "index out of bounds");
_length--;
void* dst = (char*)_data + i*esize;