hotspot/src/share/vm/runtime/atomic.hpp
changeset 360 21d113ecbf6a
parent 1 489c9b5090e2
child 670 ddf3e9583f2f
equal deleted inserted replaced
357:f4edb0d9f109 360:21d113ecbf6a
    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 };