Mercurial > hg > graal-compiler
comparison src/share/vm/utilities/taskqueue.hpp @ 1833:8b10f48633dc
6984287: Regularize how GC parallel workers are specified.
Summary: Associate number of GC workers with the workgang as opposed to the task.
Reviewed-by: johnc, ysr
author | jmasa |
---|---|
date | Mon, 20 Sep 2010 14:38:38 -0700 |
parents | 5f429ee79634 |
children | 894b1d7c7e01 |
comparison
equal
deleted
inserted
replaced
1781:97fbf5beff7b | 1833:8b10f48633dc |
---|---|
303 return true; | 303 return true; |
304 } | 304 } |
305 return false; | 305 return false; |
306 } | 306 } |
307 | 307 |
308 // pop_local_slow() is done by the owning thread and is trying to | |
309 // get the last task in the queue. It will compete with pop_global() | |
310 // that will be used by other threads. The tag age is incremented | |
311 // whenever the queue goes empty which it will do here if this thread | |
312 // gets the last task or in pop_global() if the queue wraps (top == 0 | |
313 // and pop_global() succeeds, see pop_global()). | |
308 template<class E, unsigned int N> | 314 template<class E, unsigned int N> |
309 bool GenericTaskQueue<E, N>::pop_local_slow(uint localBot, Age oldAge) { | 315 bool GenericTaskQueue<E, N>::pop_local_slow(uint localBot, Age oldAge) { |
310 // This queue was observed to contain exactly one element; either this | 316 // This queue was observed to contain exactly one element; either this |
311 // thread will claim it, or a competing "pop_global". In either case, | 317 // thread will claim it, or a competing "pop_global". In either case, |
312 // the queue will be logically empty afterwards. Create a new Age value | 318 // the queue will be logically empty afterwards. Create a new Age value |
635 // Reset the terminator, so that it may be reused again. | 641 // Reset the terminator, so that it may be reused again. |
636 // The caller is responsible for ensuring that this is done | 642 // The caller is responsible for ensuring that this is done |
637 // in an MT-safe manner, once the previous round of use of | 643 // in an MT-safe manner, once the previous round of use of |
638 // the terminator is finished. | 644 // the terminator is finished. |
639 void reset_for_reuse(); | 645 void reset_for_reuse(); |
646 // Same as above but the number of parallel threads is set to the | |
647 // given number. | |
648 void reset_for_reuse(int n_threads); | |
640 | 649 |
641 #ifdef TRACESPINNING | 650 #ifdef TRACESPINNING |
642 static uint total_yields() { return _total_yields; } | 651 static uint total_yields() { return _total_yields; } |
643 static uint total_spins() { return _total_spins; } | 652 static uint total_spins() { return _total_spins; } |
644 static uint total_peeks() { return _total_peeks; } | 653 static uint total_peeks() { return _total_peeks; } |
780 typedef OverflowTaskQueue<StarTask> OopStarTaskQueue; | 789 typedef OverflowTaskQueue<StarTask> OopStarTaskQueue; |
781 typedef GenericTaskQueueSet<OopStarTaskQueue> OopStarTaskQueueSet; | 790 typedef GenericTaskQueueSet<OopStarTaskQueue> OopStarTaskQueueSet; |
782 | 791 |
783 typedef OverflowTaskQueue<size_t> RegionTaskQueue; | 792 typedef OverflowTaskQueue<size_t> RegionTaskQueue; |
784 typedef GenericTaskQueueSet<RegionTaskQueue> RegionTaskQueueSet; | 793 typedef GenericTaskQueueSet<RegionTaskQueue> RegionTaskQueueSet; |
794 |