Mercurial > hg > graal-jvmci-8
comparison src/share/vm/utilities/taskqueue.hpp @ 12316:190899198332
7195622: CheckUnhandledOops has limited usefulness now
Summary: Enable CHECK_UNHANDLED_OOPS in fastdebug builds across all supported platforms.
Reviewed-by: coleenp, hseigel, dholmes, stefank, twisti, ihse, rdurbin
Contributed-by: lois.foltan@oracle.com
author | hseigel |
---|---|
date | Thu, 26 Sep 2013 10:25:02 -0400 |
parents | 61521bd65100 |
children | 2b8e28fdf503 |
comparison
equal
deleted
inserted
replaced
12315:c1fbf21c7397 | 12316:190899198332 |
---|---|
320 inline bool push(E t); | 320 inline bool push(E t); |
321 | 321 |
322 // Attempts to claim a task from the "local" end of the queue (the most | 322 // Attempts to claim a task from the "local" end of the queue (the most |
323 // recently pushed). If successful, returns true and sets t to the task; | 323 // recently pushed). If successful, returns true and sets t to the task; |
324 // otherwise, returns false (the queue is empty). | 324 // otherwise, returns false (the queue is empty). |
325 inline bool pop_local(E& t); | 325 inline bool pop_local(volatile E& t); |
326 | 326 |
327 // Like pop_local(), but uses the "global" end of the queue (the least | 327 // Like pop_local(), but uses the "global" end of the queue (the least |
328 // recently pushed). | 328 // recently pushed). |
329 bool pop_global(E& t); | 329 bool pop_global(volatile E& t); |
330 | 330 |
331 // Delete any resource associated with the queue. | 331 // Delete any resource associated with the queue. |
332 ~GenericTaskQueue(); | 332 ~GenericTaskQueue(); |
333 | 333 |
334 // apply the closure to all elements in the task queue | 334 // apply the closure to all elements in the task queue |
422 assert(dirty_size(localBot, _age.top()) != N - 1, "sanity"); | 422 assert(dirty_size(localBot, _age.top()) != N - 1, "sanity"); |
423 return false; | 423 return false; |
424 } | 424 } |
425 | 425 |
426 template<class E, MEMFLAGS F, unsigned int N> | 426 template<class E, MEMFLAGS F, unsigned int N> |
427 bool GenericTaskQueue<E, F, N>::pop_global(E& t) { | 427 bool GenericTaskQueue<E, F, N>::pop_global(volatile E& t) { |
428 Age oldAge = _age.get(); | 428 Age oldAge = _age.get(); |
429 // Architectures with weak memory model require a barrier here | 429 // Architectures with weak memory model require a barrier here |
430 // to guarantee that bottom is not older than age, | 430 // to guarantee that bottom is not older than age, |
431 // which is crucial for the correctness of the algorithm. | 431 // which is crucial for the correctness of the algorithm. |
432 #if !(defined SPARC || defined IA32 || defined AMD64) | 432 #if !(defined SPARC || defined IA32 || defined AMD64) |
699 return push_slow(t, dirty_n_elems); | 699 return push_slow(t, dirty_n_elems); |
700 } | 700 } |
701 } | 701 } |
702 | 702 |
703 template<class E, MEMFLAGS F, unsigned int N> inline bool | 703 template<class E, MEMFLAGS F, unsigned int N> inline bool |
704 GenericTaskQueue<E, F, N>::pop_local(E& t) { | 704 GenericTaskQueue<E, F, N>::pop_local(volatile E& t) { |
705 uint localBot = _bottom; | 705 uint localBot = _bottom; |
706 // This value cannot be N-1. That can only occur as a result of | 706 // This value cannot be N-1. That can only occur as a result of |
707 // the assignment to bottom in this method. If it does, this method | 707 // the assignment to bottom in this method. If it does, this method |
708 // resets the size to 0 before the next call (which is sequential, | 708 // resets the size to 0 before the next call (which is sequential, |
709 // since this is pop_local.) | 709 // since this is pop_local.) |
797 _index = t._index; | 797 _index = t._index; |
798 return *this; | 798 return *this; |
799 } | 799 } |
800 volatile ObjArrayTask& | 800 volatile ObjArrayTask& |
801 operator =(const volatile ObjArrayTask& t) volatile { | 801 operator =(const volatile ObjArrayTask& t) volatile { |
802 _obj = t._obj; | 802 (void)const_cast<oop&>(_obj = t._obj); |
803 _index = t._index; | 803 _index = t._index; |
804 return *this; | 804 return *this; |
805 } | 805 } |
806 | 806 |
807 inline oop obj() const { return _obj; } | 807 inline oop obj() const { return _obj; } |