< prev index next >

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

Print this page




  84   _size = from->_size;
  85   _capacity = from->_capacity;
  86   from->_array = NULL;
  87   from->_size = 0;
  88   from->_capacity = 0;
  89 }
  90 
  91 template <typename T>
  92 inline void ZArray<T>::clear() {
  93   _size = 0;
  94 }
  95 
  96 template <typename T, bool parallel>
  97 inline ZArrayIteratorImpl<T, parallel>::ZArrayIteratorImpl(ZArray<T>* array) :
  98     _array(array),
  99     _next(0) {}
 100 
 101 template <typename T, bool parallel>
 102 inline bool ZArrayIteratorImpl<T, parallel>::next(T* elem) {
 103   if (parallel) {
 104     const size_t next = Atomic::add(1u, &_next) - 1u;
 105     if (next < _array->size()) {
 106       *elem = _array->at(next);
 107       return true;
 108     }
 109   } else {
 110     if (_next < _array->size()) {
 111       *elem = _array->at(_next++);
 112       return true;
 113     }
 114   }
 115 
 116   // No more elements
 117   return false;
 118 }
 119 
 120 template <typename T>
 121 inline ZArrayIterator<T>::ZArrayIterator(ZArray<T>* array) :
 122     ZArrayIteratorImpl<T, ZARRAY_SERIAL>(array) {}
 123 
 124 template <typename T>


  84   _size = from->_size;
  85   _capacity = from->_capacity;
  86   from->_array = NULL;
  87   from->_size = 0;
  88   from->_capacity = 0;
  89 }
  90 
  91 template <typename T>
  92 inline void ZArray<T>::clear() {
  93   _size = 0;
  94 }
  95 
  96 template <typename T, bool parallel>
  97 inline ZArrayIteratorImpl<T, parallel>::ZArrayIteratorImpl(ZArray<T>* array) :
  98     _array(array),
  99     _next(0) {}
 100 
 101 template <typename T, bool parallel>
 102 inline bool ZArrayIteratorImpl<T, parallel>::next(T* elem) {
 103   if (parallel) {
 104     const size_t next = Atomic::add(&_next, 1u) - 1u;
 105     if (next < _array->size()) {
 106       *elem = _array->at(next);
 107       return true;
 108     }
 109   } else {
 110     if (_next < _array->size()) {
 111       *elem = _array->at(_next++);
 112       return true;
 113     }
 114   }
 115 
 116   // No more elements
 117   return false;
 118 }
 119 
 120 template <typename T>
 121 inline ZArrayIterator<T>::ZArrayIterator(ZArray<T>* array) :
 122     ZArrayIteratorImpl<T, ZARRAY_SERIAL>(array) {}
 123 
 124 template <typename T>
< prev index next >