< prev index next >
src/share/vm/utilities/array.cpp
Print this page
*** 26,66 ****
#include "memory/resourceArea.hpp"
#include "runtime/thread.inline.hpp"
#include "utilities/array.hpp"
- #ifdef ASSERT
- void ResourceArray::init_nesting() {
- _nesting = Thread::current()->resource_area()->nesting();
- }
- #endif
-
-
- void ResourceArray::sort(size_t esize, ftype f) {
- if (!is_empty()) qsort(_data, length(), esize, f);
- }
- template <MEMFLAGS F> void CHeapArray<F>::sort(size_t esize, ftype f) {
- if (!is_empty()) qsort(_data, length(), esize, f);
- }
-
-
- void ResourceArray::expand(size_t esize, int i, int& size) {
- // make sure we are expanding within the original resource mark
- assert(
- _nesting == Thread::current()->resource_area()->nesting(),
- "allocating outside original resource mark"
- );
- // determine new size
- if (size == 0) size = 4; // prevent endless loop
- while (i >= size) size *= 2;
- // allocate and initialize new data section
- void* data = resource_allocate_bytes(esize * size);
- memcpy(data, _data, esize * length());
- _data = data;
- }
-
-
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
--- 26,35 ----
*** 68,87 ****
memcpy(data, _data, esize * length());
FREE_C_HEAP_ARRAY(char*, _data);
_data = data;
}
-
- void ResourceArray::remove_at(size_t esize, int i) {
- assert(0 <= i && i < length(), "index out of bounds");
- _length--;
- void* dst = (char*)_data + i*esize;
- void* src = (char*)dst + esize;
- size_t cnt = (length() - i)*esize;
- memmove(dst, src, cnt);
- }
-
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;
void* src = (char*)dst + esize;
--- 37,46 ----
< prev index next >