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 }; |