Skip to content
  • Allison Karlitskaya's avatar
    glib: Rewrite gatomic.[ch] · 83821352
    Allison Karlitskaya authored
     - remove all inline assembly versions
    
     - implement the atomic operations using either GCC intrinsics, the
       Windows interlocked API or a mutex-based fallback
    
     - drop gatomic-gcc.c since these are now defined in the header file.
       Adjust Makefile.am accordingly.
    
     - expand the set of operations: support 'get', 'set', 'compare and
       exchange', 'add', 'or', and 'xor' for both integers and pointers
    
     - deprecate g_atomic_int_exchange_and_add since g_atomic_int_add (as
       with all the new arithmetic operations) now returns the prior value
    
     - unify the use of macros: all functions are now wrapped in macros that
       perform the proper casts and checks
    
     - remove G_GNUC_MAY_ALIAS use; it was never required for the integer
       operations (since casting between pointers that only vary in
       signedness of the target is explicitly permitted) and we avoid the
       need for the pointer operations by using simple 'void *' instead of
       'gpointer *' (which caused the 'type-punned pointer' wa...
    83821352