src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp
changeset 59247 56bf71d64d51
parent 58863 c16ac7a2eba4
child 59290 97d13893ec3c
equal deleted inserted replaced
59246:fcad92f425c5 59247:56bf71d64d51
    44 static uint64_t store_generation = 0;
    44 static uint64_t store_generation = 0;
    45 static uint64_t serialized_generation = 0;
    45 static uint64_t serialized_generation = 0;
    46 
    46 
    47 inline void set_generation(uint64_t value, uint64_t* const dest) {
    47 inline void set_generation(uint64_t value, uint64_t* const dest) {
    48   assert(dest != NULL, "invariant");
    48   assert(dest != NULL, "invariant");
    49   OrderAccess::release_store(dest, value);
    49   Atomic::release_store(dest, value);
    50 }
    50 }
    51 static void increment_store_generation() {
    51 static void increment_store_generation() {
    52   const uint64_t current_serialized = OrderAccess::load_acquire(&serialized_generation);
    52   const uint64_t current_serialized = Atomic::load_acquire(&serialized_generation);
    53   const uint64_t current_stored = OrderAccess::load_acquire(&store_generation);
    53   const uint64_t current_stored = Atomic::load_acquire(&store_generation);
    54   if (current_serialized == current_stored) {
    54   if (current_serialized == current_stored) {
    55     set_generation(current_serialized + 1, &store_generation);
    55     set_generation(current_serialized + 1, &store_generation);
    56   }
    56   }
    57 }
    57 }
    58 
    58 
    59 static bool increment_serialized_generation() {
    59 static bool increment_serialized_generation() {
    60   const uint64_t current_stored = OrderAccess::load_acquire(&store_generation);
    60   const uint64_t current_stored = Atomic::load_acquire(&store_generation);
    61   const uint64_t current_serialized = OrderAccess::load_acquire(&serialized_generation);
    61   const uint64_t current_serialized = Atomic::load_acquire(&serialized_generation);
    62   if (current_stored != current_serialized) {
    62   if (current_stored != current_serialized) {
    63     set_generation(current_stored, &serialized_generation);
    63     set_generation(current_stored, &serialized_generation);
    64     return true;
    64     return true;
    65   }
    65   }
    66   return false;
    66   return false;