mirror of
https://github.com/postgres/postgres.git
synced 2026-07-15 20:52:53 -04:00
Remove pg_spin_delay().
This code appears to be an artifact from commit b64d92f1a5 that was
never used for anything.
Reviewed-by: Corey Huinker <corey.huinker@gmail.com>
Discussion: https://postgr.es/m/afouZUH_eUkIj4i4%40nathan
This commit is contained in:
parent
b1c41398e4
commit
ae27a41e0c
3 changed files with 0 additions and 65 deletions
|
|
@ -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.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue