Return-Path: Delivered-To: apmail-incubator-stdcxx-commits-archive@www.apache.org Received: (qmail 9502 invoked from network); 16 Jan 2008 12:11:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 16 Jan 2008 12:11:58 -0000 Received: (qmail 989 invoked by uid 500); 16 Jan 2008 12:11:47 -0000 Delivered-To: apmail-incubator-stdcxx-commits-archive@incubator.apache.org Received: (qmail 967 invoked by uid 500); 16 Jan 2008 12:11:47 -0000 Mailing-List: contact stdcxx-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: stdcxx-dev@incubator.apache.org Delivered-To: mailing list stdcxx-commits@incubator.apache.org Received: (qmail 948 invoked by uid 99); 16 Jan 2008 12:11:47 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 16 Jan 2008 04:11:47 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 16 Jan 2008 12:11:30 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 45C5E1A9832; Wed, 16 Jan 2008 04:11:35 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r612430 - /stdcxx/branches/4.2.x/include/rw/_mutex.h Date: Wed, 16 Jan 2008 12:11:34 -0000 To: stdcxx-commits@incubator.apache.org From: faridz@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080116121136.45C5E1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: faridz Date: Wed Jan 16 04:11:24 2008 New Revision: 612430 URL: http://svn.apache.org/viewvc?rev=612430&view=rev Log: 2008-01-16 Farid Zaripov * include/rw/_mutex.h: Use intrinsic interlocked functions on MSVC 7.1 and ICC. Declare the interlocked functions instead of #including . Modified: stdcxx/branches/4.2.x/include/rw/_mutex.h Modified: stdcxx/branches/4.2.x/include/rw/_mutex.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_mutex.h?rev=612430&r1=612429&r2=612430&view=diff ============================================================================== --- stdcxx/branches/4.2.x/include/rw/_mutex.h (original) +++ stdcxx/branches/4.2.x/include/rw/_mutex.h Wed Jan 16 04:11:24 2008 @@ -119,6 +119,12 @@ # include # define _RWSTD_MUTEX_T _RTL_CRITICAL_SECTION +# ifndef _MSC_VER +# define _InterlockedIncrement InterlockedIncrement +# define _InterlockedDecrement InterlockedDecrement +# define _InterlockedExchange InterlockedExchange +# endif // _MSC_VER + # else // if defined (_RWSTD_NO_FWD_DECLARATIONS) // avoid #including this header (MFC doesn't like it) @@ -142,7 +148,7 @@ DeleteCriticalSection (_RTL_CRITICAL_SECTION*); -#if defined _RWSTD_INTERLOCKED_T && (!defined (_MSC_VER) || _MSC_VER < 1400) +#if defined (_RWSTD_INTERLOCKED_T) && !defined (_MSC_VER) __declspec (dllimport) long __stdcall InterlockedIncrement (_RWSTD_INTERLOCKED_T*); @@ -157,7 +163,7 @@ # define _InterlockedDecrement InterlockedDecrement # define _InterlockedExchange InterlockedExchange -#endif // _RWSTD_INTERLOCKED_T && (!_MSC_VER || _MSC_VER < 1400) +#endif // _RWSTD_INTERLOCKED_T && !_MSC_VER } // extern "C" @@ -176,21 +182,35 @@ # endif // _RWSTD_NO_FWD_DECLARATIONS -# if defined (_MSC_VER) && _MSC_VER >= 1400 && !defined (__INTEL_COMPILER) -# include - -# pragma intrinsic (_InterlockedIncrement) -# pragma intrinsic (_InterlockedIncrement16) -# pragma intrinsic (_InterlockedDecrement) -# pragma intrinsic (_InterlockedDecrement16) -# pragma intrinsic (_InterlockedExchange) +# ifdef _MSC_VER +extern "C" long __cdecl _InterlockedIncrement (volatile long*); +extern "C" long __cdecl _InterlockedDecrement (volatile long*); +extern "C" long __cdecl _InterlockedExchange (volatile long*, long); +# ifndef __INTEL_COMPILER +# pragma intrinsic (_InterlockedIncrement) +# pragma intrinsic (_InterlockedDecrement) +# pragma intrinsic (_InterlockedExchange) +# endif // __INTEL_COMPILER + +# if _MSC_VER >= 1400 && !defined (__INTEL_COMPILER) +extern "C" short __cdecl _InterlockedIncrement16 (volatile short*); +extern "C" short __cdecl _InterlockedDecrement16 (volatile short*); +# pragma intrinsic (_InterlockedIncrement16) +# pragma intrinsic (_InterlockedDecrement16) +# endif // _MSC_VER >= 1400 && !__INTEL_COMPILER # ifdef _M_X64 -# pragma intrinsic (_InterlockedIncrement64) -# pragma intrinsic (_InterlockedDecrement64) -# pragma intrinsic (_InterlockedExchange64) -# endif -# endif // _MSC_VER >= 1400 && !__INTEL_COMPILER +extern "C" long long __cdecl _InterlockedIncrement64 (volatile long long*); +extern "C" long long __cdecl _InterlockedDecrement64 (volatile long long*); +extern "C" long long __cdecl _InterlockedExchange64 (volatile long long*, + long long); +# ifndef __INTEL_COMPILER +# pragma intrinsic (_InterlockedIncrement64) +# pragma intrinsic (_InterlockedDecrement64) +# pragma intrinsic (_InterlockedExchange64) +# endif // __INTEL_COMPILER +# endif // _M_X64 +# endif // _MSC_VER _RWSTD_NAMESPACE (__rw) {