src/hotspot/share/utilities/bitMap.inline.hpp
changeset 59252 623722a6aeb9
parent 59247 56bf71d64d51
child 59290 97d13893ec3c
equal deleted inserted replaced
59251:4cbfa5077d68 59252:623722a6aeb9
    70   do {
    70   do {
    71     const bm_word_t new_val = old_val | mask;
    71     const bm_word_t new_val = old_val | mask;
    72     if (new_val == old_val) {
    72     if (new_val == old_val) {
    73       return false;     // Someone else beat us to it.
    73       return false;     // Someone else beat us to it.
    74     }
    74     }
    75     const bm_word_t cur_val = Atomic::cmpxchg(new_val, addr, old_val, memory_order);
    75     const bm_word_t cur_val = Atomic::cmpxchg(addr, old_val, new_val, memory_order);
    76     if (cur_val == old_val) {
    76     if (cur_val == old_val) {
    77       return true;      // Success.
    77       return true;      // Success.
    78     }
    78     }
    79     old_val = cur_val;  // The value changed, try again.
    79     old_val = cur_val;  // The value changed, try again.
    80   } while (true);
    80   } while (true);
    89   do {
    89   do {
    90     const bm_word_t new_val = old_val & mask;
    90     const bm_word_t new_val = old_val & mask;
    91     if (new_val == old_val) {
    91     if (new_val == old_val) {
    92       return false;     // Someone else beat us to it.
    92       return false;     // Someone else beat us to it.
    93     }
    93     }
    94     const bm_word_t cur_val = Atomic::cmpxchg(new_val, addr, old_val, memory_order);
    94     const bm_word_t cur_val = Atomic::cmpxchg(addr, old_val, new_val, memory_order);
    95     if (cur_val == old_val) {
    95     if (cur_val == old_val) {
    96       return true;      // Success.
    96       return true;      // Success.
    97     }
    97     }
    98     old_val = cur_val;  // The value changed, try again.
    98     old_val = cur_val;  // The value changed, try again.
    99   } while (true);
    99   } while (true);