Skip to content

Commit

Permalink
Fixing compilation problems on 32 Linux systems
Browse files Browse the repository at this point in the history
  • Loading branch information
hkaiser committed Oct 11, 2023
1 parent cdc1521 commit 04efe12
Showing 1 changed file with 14 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace hpx::lockfree {

uint128_type() = default;

constexpr uint128_type(std::uint64_t l, std::uint64_t r) noexcept
constexpr uint128_type(std::size_t l, std::size_t r) noexcept
: left(l)
, right(r)
{
Expand All @@ -52,11 +52,21 @@ namespace hpx::lockfree {
}
};

namespace detail {

template <std::size_t Size>
inline constexpr std::size_t ptr_mask = 0xffffffffffff;

template <>
inline constexpr std::size_t ptr_mask<4> = 0xffffffff;
} // namespace detail

template <typename Left, typename Right>
struct HPX_LOCKFREE_DCAS_ALIGNMENT tagged_ptr_pair
{
using compressed_ptr_pair_t = uint128_type;
using compressed_ptr_t = std::uint64_t;
// compressed_ptr_t must be of the same size as a pointer
using compressed_ptr_t = std::size_t;
using tag_t = std::uint16_t;

struct HPX_LOCKFREE_DCAS_ALIGNMENT cast_unit
Expand All @@ -82,7 +92,8 @@ namespace hpx::lockfree {

static constexpr std::size_t left_tag_index = 3;
static constexpr std::size_t right_tag_index = 7;
static constexpr compressed_ptr_t ptr_mask = 0xffffffffffff;
static constexpr compressed_ptr_t ptr_mask =
detail::ptr_mask<sizeof(compressed_ptr_t)>;

static constexpr Left* extract_left_ptr(
compressed_ptr_pair_t i) noexcept
Expand Down

0 comments on commit 04efe12

Please sign in to comment.