src/share/vm/utilities/taskqueue.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7089790_full Sdiff src/share/vm/utilities

src/share/vm/utilities/taskqueue.cpp

Print this page
rev 2694 : imported patch headers_only


  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "oops/oop.inline.hpp"
  27 #include "runtime/os.hpp"
  28 #include "utilities/debug.hpp"
  29 #include "utilities/stack.inline.hpp"
  30 #include "utilities/taskqueue.hpp"
  31 #ifdef TARGET_OS_FAMILY_linux
  32 # include "thread_linux.inline.hpp"
  33 #endif
  34 #ifdef TARGET_OS_FAMILY_solaris
  35 # include "thread_solaris.inline.hpp"
  36 #endif
  37 #ifdef TARGET_OS_FAMILY_windows
  38 # include "thread_windows.inline.hpp"
  39 #endif



  40 
  41 #ifdef TRACESPINNING
  42 uint ParallelTaskTerminator::_total_yields = 0;
  43 uint ParallelTaskTerminator::_total_spins = 0;
  44 uint ParallelTaskTerminator::_total_peeks = 0;
  45 #endif
  46 
  47 #if TASKQUEUE_STATS
  48 const char * const TaskQueueStats::_names[last_stat_id] = {
  49   "qpush", "qpop", "qpop-s", "qattempt", "qsteal", "opush", "omax"
  50 };
  51 
  52 TaskQueueStats & TaskQueueStats::operator +=(const TaskQueueStats & addend)
  53 {
  54   for (unsigned int i = 0; i < last_stat_id; ++i) {
  55     _stats[i] += addend._stats[i];
  56   }
  57   return *this;
  58 }
  59 


 257 
 258 void ParallelTaskTerminator::reset_for_reuse() {
 259   if (_offered_termination != 0) {
 260     assert(_offered_termination == _n_threads,
 261            "Terminator may still be in use");
 262     _offered_termination = 0;
 263   }
 264 }
 265 
 266 #ifdef ASSERT
 267 bool ObjArrayTask::is_valid() const {
 268   return _obj != NULL && _obj->is_objArray() && _index > 0 &&
 269     _index < objArrayOop(_obj)->length();
 270 }
 271 #endif // ASSERT
 272 
 273 void ParallelTaskTerminator::reset_for_reuse(int n_threads) {
 274   reset_for_reuse();
 275   _n_threads = n_threads;
 276 }
 277 


  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "oops/oop.inline.hpp"
  27 #include "runtime/os.hpp"
  28 #include "utilities/debug.hpp"
  29 #include "utilities/stack.inline.hpp"
  30 #include "utilities/taskqueue.hpp"
  31 #ifdef TARGET_OS_FAMILY_linux
  32 # include "thread_linux.inline.hpp"
  33 #endif
  34 #ifdef TARGET_OS_FAMILY_solaris
  35 # include "thread_solaris.inline.hpp"
  36 #endif
  37 #ifdef TARGET_OS_FAMILY_windows
  38 # include "thread_windows.inline.hpp"
  39 #endif
  40 #ifdef TARGET_OS_FAMILY_bsd
  41 # include "thread_bsd.inline.hpp"
  42 #endif
  43 
  44 #ifdef TRACESPINNING
  45 uint ParallelTaskTerminator::_total_yields = 0;
  46 uint ParallelTaskTerminator::_total_spins = 0;
  47 uint ParallelTaskTerminator::_total_peeks = 0;
  48 #endif
  49 
  50 #if TASKQUEUE_STATS
  51 const char * const TaskQueueStats::_names[last_stat_id] = {
  52   "qpush", "qpop", "qpop-s", "qattempt", "qsteal", "opush", "omax"
  53 };
  54 
  55 TaskQueueStats & TaskQueueStats::operator +=(const TaskQueueStats & addend)
  56 {
  57   for (unsigned int i = 0; i < last_stat_id; ++i) {
  58     _stats[i] += addend._stats[i];
  59   }
  60   return *this;
  61 }
  62 


 260 
 261 void ParallelTaskTerminator::reset_for_reuse() {
 262   if (_offered_termination != 0) {
 263     assert(_offered_termination == _n_threads,
 264            "Terminator may still be in use");
 265     _offered_termination = 0;
 266   }
 267 }
 268 
 269 #ifdef ASSERT
 270 bool ObjArrayTask::is_valid() const {
 271   return _obj != NULL && _obj->is_objArray() && _index > 0 &&
 272     _index < objArrayOop(_obj)->length();
 273 }
 274 #endif // ASSERT
 275 
 276 void ParallelTaskTerminator::reset_for_reuse(int n_threads) {
 277   reset_for_reuse();
 278   _n_threads = n_threads;
 279 }

src/share/vm/utilities/taskqueue.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File