src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceId.cpp
branchJEP-349-branch
changeset 58159 892527a70da9
parent 57870 00860d9caf4d
child 58164 1343c01b29d5
equal deleted inserted replaced
58158:369ebc2a11c2 58159:892527a70da9
    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 = Atomic::load(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