Thread

  1. [PATCH v1 1/1] remove pg_spin_delay()

    Nathan Bossart <nathan@postgresql.org> — 2026-05-05T17:37:50Z

    ---
     src/include/port/atomics.h          |  5 ---
     src/include/port/atomics/arch-x86.h | 54 -----------------------------
     src/include/port/atomics/generic.h  |  6 ----
     3 files changed, 65 deletions(-)
    
    diff --git a/src/include/port/atomics.h b/src/include/port/atomics.h
    index d8b1d20fe60..c50d95d29e2 100644
    --- a/src/include/port/atomics.h
    +++ b/src/include/port/atomics.h
    @@ -154,11 +154,6 @@
     #define pg_read_barrier()	pg_read_barrier_impl()
     #define pg_write_barrier()	pg_write_barrier_impl()
     
    -/*
    - * Spinloop delay - Allow CPU to relax in busy loops
    - */
    -#define pg_spin_delay() pg_spin_delay_impl()
    -
     /*
      * pg_atomic_init_flag - initialize atomic flag.
      *
    diff --git a/src/include/port/atomics/arch-x86.h b/src/include/port/atomics/arch-x86.h
    index bd6f4f56ca2..b317cf7a188 100644
    --- a/src/include/port/atomics/arch-x86.h
    +++ b/src/include/port/atomics/arch-x86.h
    @@ -76,60 +76,6 @@ typedef struct pg_atomic_uint64
     } pg_atomic_uint64;
     #endif	/* __x86_64__ */
     
    -#endif /* defined(__GNUC__) || defined(__INTEL_COMPILER) */
    -
    -#if !defined(PG_HAVE_SPIN_DELAY)
    -/*
    - * This sequence is equivalent to the PAUSE instruction ("rep" is
    - * ignored by old IA32 processors if the following instruction is
    - * not a string operation); the IA-32 Architecture Software
    - * Developer's Manual, Vol. 3, Section 7.7.2 describes why using
    - * PAUSE in the inner loop of a spin lock is necessary for good
    - * performance:
    - *
    - *     The PAUSE instruction improves the performance of IA-32
    - *     processors supporting Hyper-Threading Technology when
    - *     executing spin-wait loops and other routines where one
    - *     thread is accessing a shared lock or semaphore in a tight
    - *     polling loop. When executing a spin-wait loop, the
    - *     processor can suffer a severe performance penalty when
    - *     exiting the loop because it detects a possible memory order
    - *     violation and flushes the core processor's pipeline. The
    - *     PAUSE instruction provides a hint to the processor that the
    - *     code sequence is a spin-wait loop. The processor uses this
    - *     hint to avoid the memory order violation and prevent the
    - *     pipeline flush. In addition, the PAUSE instruction
    - *     de-pipelines the spin-wait loop to prevent it from
    - *     consuming execution resources excessively.
    - */
    -#if defined(__GNUC__) || defined(__INTEL_COMPILER)
    -#define PG_HAVE_SPIN_DELAY
    -static inline void
    -pg_spin_delay_impl(void)
    -{
    -	__asm__ __volatile__(" rep; nop			\n");
    -}
    -#elif defined(_MSC_VER) && defined(__x86_64__)
    -#define PG_HAVE_SPIN_DELAY
    -static __forceinline void
    -pg_spin_delay_impl(void)
    -{
    -	_mm_pause();
    -}
    -#elif defined(_MSC_VER)
    -#define PG_HAVE_SPIN_DELAY
    -static __forceinline void
    -pg_spin_delay_impl(void)
    -{
    -	/* See comment for gcc code. Same code, MASM syntax */
    -	__asm rep nop;
    -}
    -#endif
    -#endif /* !defined(PG_HAVE_SPIN_DELAY) */
    -
    -
    -#if defined(__GNUC__) || defined(__INTEL_COMPILER)
    -
     #define PG_HAVE_ATOMIC_TEST_SET_FLAG
     static inline bool
     pg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr)
    diff --git a/src/include/port/atomics/generic.h b/src/include/port/atomics/generic.h
    index fd64b6cbd86..daa772e9a6d 100644
    --- a/src/include/port/atomics/generic.h
    +++ b/src/include/port/atomics/generic.h
    @@ -28,12 +28,6 @@
     #	define pg_write_barrier_impl pg_memory_barrier_impl
     #endif
     
    -#ifndef PG_HAVE_SPIN_DELAY
    -#define PG_HAVE_SPIN_DELAY
    -#define pg_spin_delay_impl()	((void)0)
    -#endif
    -
    -
     /* provide fallback */
     #if !defined(PG_HAVE_ATOMIC_FLAG_SUPPORT) && defined(PG_HAVE_ATOMIC_U32_SUPPORT)
     #define PG_HAVE_ATOMIC_FLAG_SUPPORT
    -- 
    2.50.1 (Apple Git-155)
    
    
    --9wPlq30DMLxbhZ5y--