src/hotspot/share/utilities/waitBarrier_generic.cpp
changeset 59249 29b0d0b61615
parent 53254 47bc06170313
child 59252 623722a6aeb9
equal deleted inserted replaced
59248:e92153ed8bdc 59249:29b0d0b61615
    80   if (barrier_tag != _barrier_tag) {
    80   if (barrier_tag != _barrier_tag) {
    81     // API specifies wait() must provide a trailing fence.
    81     // API specifies wait() must provide a trailing fence.
    82     OrderAccess::fence();
    82     OrderAccess::fence();
    83     return;
    83     return;
    84   }
    84   }
    85   Atomic::add(1, &_barrier_threads);
    85   Atomic::add(&_barrier_threads, 1);
    86   if (barrier_tag != 0 && barrier_tag == _barrier_tag) {
    86   if (barrier_tag != 0 && barrier_tag == _barrier_tag) {
    87     Atomic::add(1, &_waiters);
    87     Atomic::add(&_waiters, 1);
    88     _sem_barrier.wait();
    88     _sem_barrier.wait();
    89     // We help out with posting, but we need to do so before we decrement the
    89     // We help out with posting, but we need to do so before we decrement the
    90     // _barrier_threads otherwise we might wake threads up in next wait.
    90     // _barrier_threads otherwise we might wake threads up in next wait.
    91     GenericWaitBarrier::wake_if_needed();
    91     GenericWaitBarrier::wake_if_needed();
    92   }
    92   }
    93   Atomic::add(-1, &_barrier_threads);
    93   Atomic::add(&_barrier_threads, -1);
    94 }
    94 }