< prev index next >

src/hotspot/share/gc/shared/taskqueue.inline.hpp

Print this page

        

*** 66,76 **** // unused, so we cast the volatile away. We cannot cast directly // to void, because gcc treats that as not using the result of the // assignment. However, casting to E& means that we trigger an // unused-value warning. So, we cast the E& to void. (void)const_cast<E&>(_elems[localBot] = t); ! OrderAccess::release_store(&_bottom, increment_index(localBot)); TASKQUEUE_STATS_ONLY(stats.record_push()); return true; } return false; } --- 66,76 ---- // unused, so we cast the volatile away. We cannot cast directly // to void, because gcc treats that as not using the result of the // assignment. However, casting to E& means that we trigger an // unused-value warning. So, we cast the E& to void. (void)const_cast<E&>(_elems[localBot] = t); ! Atomic::release_store(&_bottom, increment_index(localBot)); TASKQUEUE_STATS_ONLY(stats.record_push()); return true; } return false; }
*** 87,97 **** // unused, so we cast the volatile away. We cannot cast directly // to void, because gcc treats that as not using the result of the // assignment. However, casting to E& means that we trigger an // unused-value warning. So, we cast the E& to void. (void) const_cast<E&>(_elems[localBot] = t); ! OrderAccess::release_store(&_bottom, increment_index(localBot)); TASKQUEUE_STATS_ONLY(stats.record_push()); return true; } else { return push_slow(t, dirty_n_elems); } --- 87,97 ---- // unused, so we cast the volatile away. We cannot cast directly // to void, because gcc treats that as not using the result of the // assignment. However, casting to E& means that we trigger an // unused-value warning. So, we cast the E& to void. (void) const_cast<E&>(_elems[localBot] = t); ! Atomic::release_store(&_bottom, increment_index(localBot)); TASKQUEUE_STATS_ONLY(stats.record_push()); return true; } else { return push_slow(t, dirty_n_elems); }
*** 208,218 **** // to guarantee that bottom is not older than age, // which is crucial for the correctness of the algorithm. #ifndef CPU_MULTI_COPY_ATOMIC OrderAccess::fence(); #endif ! uint localBot = OrderAccess::load_acquire(&_bottom); uint n_elems = size(localBot, oldAge.top()); if (n_elems == 0) { return false; } --- 208,218 ---- // to guarantee that bottom is not older than age, // which is crucial for the correctness of the algorithm. #ifndef CPU_MULTI_COPY_ATOMIC OrderAccess::fence(); #endif ! uint localBot = Atomic::load_acquire(&_bottom); uint n_elems = size(localBot, oldAge.top()); if (n_elems == 0) { return false; }
< prev index next >