diff options
author | Michi Henning <michi@zeroc.com> | 2009-12-09 15:12:12 +1000 |
---|---|---|
committer | Michi Henning <michi@zeroc.com> | 2009-12-09 15:12:12 +1000 |
commit | d0d27bb7cf7b5ff8f9f3028f63f650f1d0b01678 (patch) | |
tree | 9524523d712bca42f6bd36fabd72c76371ecdca8 /cpp/include/IceUtil/Shared.h | |
parent | Merge branch 'master' of ssh://cvs.zeroc.com/home/git/ice (diff) | |
parent | fix for cpp/test/Ice/Makefile.mak (diff) | |
download | ice-d0d27bb7cf7b5ff8f9f3028f63f650f1d0b01678.tar.bz2 ice-d0d27bb7cf7b5ff8f9f3028f63f650f1d0b01678.tar.xz ice-d0d27bb7cf7b5ff8f9f3028f63f650f1d0b01678.zip |
Merge branch 'master' of ssh://cvs.zeroc.com/home/git/ice
Diffstat (limited to 'cpp/include/IceUtil/Shared.h')
-rw-r--r-- | cpp/include/IceUtil/Shared.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/cpp/include/IceUtil/Shared.h b/cpp/include/IceUtil/Shared.h index a23a55fb3ae..64e4c51a74d 100644 --- a/cpp/include/IceUtil/Shared.h +++ b/cpp/include/IceUtil/Shared.h @@ -13,9 +13,24 @@ #include <IceUtil/Config.h> #if defined(ICE_USE_MUTEX_SHARED) + # include <IceUtil/Mutex.h> +// Using the gcc builtins requires gcc 4.1 or better. For Linux, i386 +// doesn't work. Apple is supported for all architectures. Sun only +// supports sparc (32 and 64 bit). + +#elif __GNUC__ >= 4 && __GNUC_MINOR__ >= 1 && \ + ((defined(__sun) && (defined(__sparc) || defined(__sparcv9))) || \ + defined(__APPLE__) || \ + (defined(__linux) && \ + (defined(__i486) || defined(__i586) || \ + defined(__i686) || defined(__x86_64)))) + +# define ICE_HAS_GCC_BUILTINS + #elif (defined(__APPLE__) || defined(__linux) || defined(__FreeBSD__)) && (defined(__i386) || defined(__x86_64)) && !defined(__ICC) + # define ICE_HAS_ATOMIC_FUNCTIONS #elif defined(_WIN32) @@ -119,7 +134,7 @@ protected: #if defined(_WIN32) LONG _ref; -#elif defined(ICE_HAS_ATOMIC_FUNCTIONS) +#elif defined(ICE_HAS_ATOMIC_FUNCTIONS) || defined(ICE_HAS_GCC_BUILTINS) volatile int _ref; #else int _ref; |