]> granicus.if.org Git - postgresql/commitdiff
Add a Win64-specific spin_delay() function.
authorMagnus Hagander <magnus@hagander.net>
Mon, 4 Jan 2010 17:10:24 +0000 (17:10 +0000)
committerMagnus Hagander <magnus@hagander.net>
Mon, 4 Jan 2010 17:10:24 +0000 (17:10 +0000)
We can't use the same as before, since MSVC on Win64 doesn't
support inline assembly.

src/include/storage/s_lock.h

index 411dbf8c4ce94dc71e0a57d949dd3efe90f3690c..c6edb7a5e9e1e9fb6df912f0447bdead6ca68761 100644 (file)
@@ -66,7 +66,7 @@
  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *       $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.169 2010/01/02 16:58:08 momjian Exp $
+ *       $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.170 2010/01/04 17:10:24 mha Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -836,12 +836,23 @@ typedef LONG slock_t;
 
 #define SPIN_DELAY() spin_delay()
 
+/* If using Visual C++ on Win64, inline assembly is unavailable.
+ * Use a __nop instrinsic instead of rep nop.
+ */
+#if defined(_WIN64)
+static __forceinline void
+spin_delay(void)
+{
+       __nop();
+}
+#else
 static __forceinline void
 spin_delay(void)
 {
        /* See comment for gcc code. Same code, MASM syntax */
        __asm rep nop;
 }
+#endif
 
 #endif