• Show log

    Commit

  • Hash : 74708a81
    Author : lhchavez
    Date : 2020-12-20T12:45:01

    Homogenize semantics for atomic-related functions
    
    There were some subtle semantic differences between the various
    implementations of atomic functions. Now they behave the same, have
    tests and are better documented to avoid this from happening again in
    the future.
    
    Of note:
    
    * The semantics chosen for `git_atomic_compare_and_swap` match
      `InterlockedCompareExchangePointer`/`__sync_cal_compare_and_swap` now.
    * The semantics chosen for `git_atomic_add` match
      `InterlockedAdd`/`__atomic_add_fetch`.
    * `git_atomic_swap` and `git_atomic_load` still have a bit of semantic
      difference with the gcc builtins / msvc interlocked operations, since
      they require an l-value (not a pointer). If desired, this can be
      homogenized.