src/share/vm/runtime/atomic.hpp

changeset 548
ba764ed4b6f2
parent 435
a61af66fc99e
child 631
d1605aabd0a1
equal deleted inserted replaced
545:a49a647afe9a 548:ba764ed4b6f2
53 static void dec (volatile jint* dest); 53 static void dec (volatile jint* dest);
54 static void dec_ptr(volatile intptr_t* dest); 54 static void dec_ptr(volatile intptr_t* dest);
55 static void dec_ptr(volatile void* dest); 55 static void dec_ptr(volatile void* dest);
56 56
57 // Performs atomic exchange of *dest with exchange_value. Returns old prior value of *dest. 57 // Performs atomic exchange of *dest with exchange_value. Returns old prior value of *dest.
58 static jint xchg (jint exchange_value, volatile jint* dest); 58 static jint xchg(jint exchange_value, volatile jint* dest);
59 static unsigned int xchg(unsigned int exchange_value,
60 volatile unsigned int* dest);
61
59 static intptr_t xchg_ptr(intptr_t exchange_value, volatile intptr_t* dest); 62 static intptr_t xchg_ptr(intptr_t exchange_value, volatile intptr_t* dest);
60 static void* xchg_ptr(void* exchange_value, volatile void* dest); 63 static void* xchg_ptr(void* exchange_value, volatile void* dest);
61 64
62 // Performs atomic compare of *dest and compare_value, and exchanges *dest with exchange_value 65 // Performs atomic compare of *dest and compare_value, and exchanges *dest with exchange_value
63 // if the comparison succeeded. Returns prior value of *dest. Guarantees a two-way memory 66 // if the comparison succeeded. Returns prior value of *dest. Guarantees a two-way memory
64 // barrier across the cmpxchg. I.e., it's really a 'fence_cmpxchg_acquire'. 67 // barrier across the cmpxchg. I.e., it's really a 'fence_cmpxchg_acquire'.
65 static jbyte cmpxchg (jbyte exchange_value, volatile jbyte* dest, jbyte compare_value); 68 static jbyte cmpxchg (jbyte exchange_value, volatile jbyte* dest, jbyte compare_value);
66 static jint cmpxchg (jint exchange_value, volatile jint* dest, jint compare_value); 69 static jint cmpxchg (jint exchange_value, volatile jint* dest, jint compare_value);
67 static jlong cmpxchg (jlong exchange_value, volatile jlong* dest, jlong compare_value); 70 static jlong cmpxchg (jlong exchange_value, volatile jlong* dest, jlong compare_value);
71
72 static unsigned int cmpxchg(unsigned int exchange_value,
73 volatile unsigned int* dest,
74 unsigned int compare_value);
75
68 static intptr_t cmpxchg_ptr(intptr_t exchange_value, volatile intptr_t* dest, intptr_t compare_value); 76 static intptr_t cmpxchg_ptr(intptr_t exchange_value, volatile intptr_t* dest, intptr_t compare_value);
69 static void* cmpxchg_ptr(void* exchange_value, volatile void* dest, void* compare_value); 77 static void* cmpxchg_ptr(void* exchange_value, volatile void* dest, void* compare_value);
70 }; 78 };

mercurial