• Marko Mäkelä's avatar
    MDEV-34983: Remove x86 asm from InnoDB · 638c62ac
    Marko Mäkelä authored
    Starting with GCC 7 and clang 15, single-bit operations such as
    fetch_or(1) & 1 are translated into 80386 instructions such as
    LOCK BTS, instead of using the generic translation pattern
    of emitting a loop around LOCK CMPXCHG.
    
    Given that the oldest currently supported GNU/Linux distributions
    ship GCC 7, and that older versions of GCC are out of support,
    let us remove some work-arounds that are not strictly necessary.
    If someone compiles the code using an older compiler, it will work
    but possibly less efficiently.
    
    srw_mutex_impl::HOLDER: Changed from 1U<<31 to 1 in order to
    work around https://github.com/llvm/llvm-project/issues/37322
    which is specific to setting the most significant bit.
    
    srw_mutex_impl::WAITER: A multiplier of waiting requests.
    This used to be 1, which would now collide with HOLDER.
    
    fil_space_t::set_stopping(): Remove this unused function.
    
    In MSVC we need _interlockedbittestandset() for LOCK BTS.
    638c62ac
srw_lock.cc 19.4 KB