Merge remote-tracking branch 'origin/master' into snmalloc2
This commit is contained in:
@@ -113,16 +113,6 @@ if(NOT MSVC)
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
target_link_libraries(snmalloc_lib INTERFACE atomic)
|
||||
endif()
|
||||
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "amd64")
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86")
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
# XXX elseif ARM?
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
@@ -138,17 +128,11 @@ if (WIN32)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "amd64")
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86")
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
endif()
|
||||
endif ()
|
||||
# detect support for cmpxchg16b; werror is needed to make sure mcx16 must be used by targets
|
||||
check_cxx_compiler_flag("-Werror -Wextra -Wall -mcx16" SNMALLOC_COMPILER_SUPPORT_MCX16)
|
||||
if(SNMALLOC_COMPILER_SUPPORT_MCX16)
|
||||
target_compile_options(snmalloc_lib INTERFACE $<$<COMPILE_LANGUAGE:CXX>:-mcx16>)
|
||||
endif()
|
||||
|
||||
if(USE_SNMALLOC_STATS)
|
||||
target_compile_definitions(snmalloc_lib INTERFACE -DUSE_SNMALLOC_STATS)
|
||||
|
||||
@@ -4,8 +4,10 @@
|
||||
#include "../pal/pal.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <random>
|
||||
#include <type_traits>
|
||||
#ifndef SNMALLOC_PLATFORM_HAS_GETENTROPY
|
||||
# include <random>
|
||||
#endif
|
||||
|
||||
namespace snmalloc
|
||||
{
|
||||
@@ -18,9 +20,13 @@ namespace snmalloc
|
||||
template<typename PAL>
|
||||
std::enable_if_t<!pal_supports<Entropy, PAL>, uint64_t> get_entropy64()
|
||||
{
|
||||
#ifdef SNMALLOC_PLATFORM_HAS_GETENTROPY
|
||||
return DefaultPal::get_entropy64();
|
||||
#else
|
||||
std::random_device rd;
|
||||
uint64_t a = rd();
|
||||
return (a << 32) ^ rd();
|
||||
#endif
|
||||
}
|
||||
|
||||
class LocalEntropy
|
||||
@@ -139,4 +145,4 @@ namespace snmalloc
|
||||
return result;
|
||||
}
|
||||
};
|
||||
} // namespace snmalloc
|
||||
} // namespace snmalloc
|
||||
|
||||
Reference in New Issue
Block a user