< prev index next >

src/hotspot/share/gc/z/zArray.inline.hpp

Print this page

        

@@ -28,88 +28,38 @@
 #include "memory/allocation.inline.hpp"
 #include "runtime/atomic.hpp"
 
 template <typename T>
 inline ZArray<T>::ZArray() :
-    _array(NULL),
-    _size(0),
-    _capacity(0) {}
-
-template <typename T>
-inline ZArray<T>::~ZArray() {
-  FREE_C_HEAP_ARRAY(T, _array);
-}
-
-template <typename T>
-inline size_t ZArray<T>::size() const {
-  return _size;
-}
-
-template <typename T>
-inline bool ZArray<T>::is_empty() const {
-  return size() == 0;
-}
-
-template <typename T>
-inline T ZArray<T>::at(size_t index) const {
-  assert(index < _size, "Index out of bounds");
-  return _array[index];
-}
-
-template <typename T>
-inline void ZArray<T>::expand(size_t new_capacity) {
-  T* new_array = NEW_C_HEAP_ARRAY(T, new_capacity, mtGC);
-  if (_array != NULL) {
-    memcpy(new_array, _array, sizeof(T) * _capacity);
-    FREE_C_HEAP_ARRAY(T, _array);
-  }
-
-  _array = new_array;
-  _capacity = new_capacity;
-}
-
-template <typename T>
-inline void ZArray<T>::add(T value) {
-  if (_size == _capacity) {
-    const size_t new_capacity = (_capacity > 0) ? _capacity * 2 : initial_capacity;
-    expand(new_capacity);
-  }
-
-  _array[_size++] = value;
-}
+    GrowableArrayCHeap<T, mtGC>(0) {}
 
 template <typename T>
 inline void ZArray<T>::transfer(ZArray<T>* from) {
-  assert(_array == NULL, "Should be empty");
-  _array = from->_array;
-  _size = from->_size;
-  _capacity = from->_capacity;
-  from->_array = NULL;
-  from->_size = 0;
-  from->_capacity = 0;
-}
-
-template <typename T>
-inline void ZArray<T>::clear() {
-  _size = 0;
+  assert(this->_data == NULL, "Should be empty");
+  this->_data = from->_data;
+  this->_len = from->_len;
+  this->_max = from->_max;
+  from->_data = NULL;
+  from->_len = 0;
+  from->_max = 0;
 }
 
 template <typename T, bool parallel>
 inline ZArrayIteratorImpl<T, parallel>::ZArrayIteratorImpl(ZArray<T>* array) :
     _array(array),
     _next(0) {}
 
 template <typename T, bool parallel>
 inline bool ZArrayIteratorImpl<T, parallel>::next(T* elem) {
   if (parallel) {
-    const size_t next = Atomic::fetch_and_add(&_next, 1u);
-    if (next < _array->size()) {
+    const int next = Atomic::fetch_and_add(&_next, 1);
+    if (next < _array->length()) {
       *elem = _array->at(next);
       return true;
     }
   } else {
-    if (_next < _array->size()) {
+    if (_next < _array->length()) {
       *elem = _array->at(_next++);
       return true;
     }
   }
 
< prev index next >