Use __sync_add_and_fetch instead of __gnu_cxx::__exchange_and_add

https://bugs.webkit.org/show_bug.cgi?id=106729

After r139514 we need atomicIncrement(int64_t volatile*) for all platform. Now the
GCC implementation of atomicIncrement() is based on __gnu_cxx::__exchange_and_add,
which doesn't support int64_t type, but __sync_add_and_fetch does.

Reviewed by Benjamin Poulain.

* wtf/Atomics.h:
(WTF::atomicIncrement):
(WTF::atomicDecrement):

Change-Id: I6f1215b1a73a93f902823a6f0efd1eaef8d53926
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139553 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Use GCC's implementation of atomicIncrement/Decrement on Mac

https://bugs.webkit.org/show_bug.cgi?id=106976

Reviewed by Filip Pizlo.

* wtf/Atomics.h:
GCC and LLVM have builtin for atomic ADD and SUB: __sync_add_and_fetch,
__sync_sub_and_fetch.

Using them let the compiler just generate the atomic operations inline
instead of generating a function call to LibC. It also simplify the
code a bit.

Change-Id: I4615faede4a9f2fc2d8415bd526db9dcb70a24ce
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@139921 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>