< prev index next >

src/share/vm/gc/shared/taskqueue.hpp

Print this page
rev 10387 : 8151436: Leaner ArrayAllocator and BitMaps
Reviewed-by: tschatzl, pliden, kbarrett


 231 // The original paper is:
 232 //
 233 // Arora, N. S., Blumofe, R. D., and Plaxton, C. G.
 234 // Thread scheduling for multiprogrammed multiprocessors.
 235 // Theory of Computing Systems 34, 2 (2001), 115-144.
 236 //
 237 // The following paper provides an correctness proof and an
 238 // implementation for weakly ordered memory models including (pseudo-)
 239 // code containing memory barriers for a Chase-Lev deque. Chase-Lev is
 240 // similar to ABP, with the main difference that it allows resizing of the
 241 // underlying storage:
 242 //
 243 // Le, N. M., Pop, A., Cohen A., and Nardell, F. Z.
 244 // Correct and efficient work-stealing for weak memory models
 245 // Proceedings of the 18th ACM SIGPLAN symposium on Principles and
 246 // practice of parallel programming (PPoPP 2013), 69-80
 247 //
 248 
 249 template <class E, MEMFLAGS F, unsigned int N = TASKQUEUE_SIZE>
 250 class GenericTaskQueue: public TaskQueueSuper<N, F> {
 251   ArrayAllocator<E, F> _array_allocator;
 252 protected:
 253   typedef typename TaskQueueSuper<N, F>::Age Age;
 254   typedef typename TaskQueueSuper<N, F>::idx_t idx_t;
 255 
 256   using TaskQueueSuper<N, F>::_bottom;
 257   using TaskQueueSuper<N, F>::_age;
 258   using TaskQueueSuper<N, F>::increment_index;
 259   using TaskQueueSuper<N, F>::decrement_index;
 260   using TaskQueueSuper<N, F>::dirty_size;
 261 
 262 public:
 263   using TaskQueueSuper<N, F>::max_elems;
 264   using TaskQueueSuper<N, F>::size;
 265 
 266 #if  TASKQUEUE_STATS
 267   using TaskQueueSuper<N, F>::stats;
 268 #endif
 269 
 270 private:
 271   // Slow paths for push, pop_local.  (pop_global has no fast path.)




 231 // The original paper is:
 232 //
 233 // Arora, N. S., Blumofe, R. D., and Plaxton, C. G.
 234 // Thread scheduling for multiprogrammed multiprocessors.
 235 // Theory of Computing Systems 34, 2 (2001), 115-144.
 236 //
 237 // The following paper provides an correctness proof and an
 238 // implementation for weakly ordered memory models including (pseudo-)
 239 // code containing memory barriers for a Chase-Lev deque. Chase-Lev is
 240 // similar to ABP, with the main difference that it allows resizing of the
 241 // underlying storage:
 242 //
 243 // Le, N. M., Pop, A., Cohen A., and Nardell, F. Z.
 244 // Correct and efficient work-stealing for weak memory models
 245 // Proceedings of the 18th ACM SIGPLAN symposium on Principles and
 246 // practice of parallel programming (PPoPP 2013), 69-80
 247 //
 248 
 249 template <class E, MEMFLAGS F, unsigned int N = TASKQUEUE_SIZE>
 250 class GenericTaskQueue: public TaskQueueSuper<N, F> {

 251 protected:
 252   typedef typename TaskQueueSuper<N, F>::Age Age;
 253   typedef typename TaskQueueSuper<N, F>::idx_t idx_t;
 254 
 255   using TaskQueueSuper<N, F>::_bottom;
 256   using TaskQueueSuper<N, F>::_age;
 257   using TaskQueueSuper<N, F>::increment_index;
 258   using TaskQueueSuper<N, F>::decrement_index;
 259   using TaskQueueSuper<N, F>::dirty_size;
 260 
 261 public:
 262   using TaskQueueSuper<N, F>::max_elems;
 263   using TaskQueueSuper<N, F>::size;
 264 
 265 #if  TASKQUEUE_STATS
 266   using TaskQueueSuper<N, F>::stats;
 267 #endif
 268 
 269 private:
 270   // Slow paths for push, pop_local.  (pop_global has no fast path.)


< prev index next >