src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.cpp
changeset 58863 c16ac7a2eba4
parent 58132 caa25ab47aca
child 59252 623722a6aeb9
equal deleted inserted replaced
58861:2c3cc4b01880 58863:c16ac7a2eba4
    31 #include "oops/klass.inline.hpp"
    31 #include "oops/klass.inline.hpp"
    32 #include "oops/instanceKlass.inline.hpp"
    32 #include "oops/instanceKlass.inline.hpp"
    33 #include "oops/method.hpp"
    33 #include "oops/method.hpp"
    34 #include "oops/oop.inline.hpp"
    34 #include "oops/oop.inline.hpp"
    35 #include "runtime/atomic.hpp"
    35 #include "runtime/atomic.hpp"
    36 #include "runtime/orderAccess.hpp"
       
    37 #include "runtime/vm_version.hpp"
    36 #include "runtime/vm_version.hpp"
    38 #include "runtime/jniHandles.inline.hpp"
    37 #include "runtime/jniHandles.inline.hpp"
    39 #include "runtime/thread.inline.hpp"
    38 #include "runtime/thread.inline.hpp"
    40 #include "utilities/debug.hpp"
    39 #include "utilities/debug.hpp"
    41 
    40 
    43 static traceid atomic_inc(traceid volatile* const dest) {
    42 static traceid atomic_inc(traceid volatile* const dest) {
    44   assert(VM_Version::supports_cx8(), "invariant");
    43   assert(VM_Version::supports_cx8(), "invariant");
    45   traceid compare_value;
    44   traceid compare_value;
    46   traceid exchange_value;
    45   traceid exchange_value;
    47   do {
    46   do {
    48     compare_value = OrderAccess::load_acquire(dest);
    47     compare_value = *dest;
    49     exchange_value = compare_value + 1;
    48     exchange_value = compare_value + 1;
    50   } while (Atomic::cmpxchg(exchange_value, dest, compare_value) != compare_value);
    49   } while (Atomic::cmpxchg(exchange_value, dest, compare_value) != compare_value);
    51   return exchange_value;
    50   return exchange_value;
    52 }
    51 }
    53 
    52