diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f162bc..3a50001 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,8 @@ cmake_minimum_required(VERSION 3.5) project(RandomX) +set(CMAKE_VERBOSE_MAKEFILE ON) + set(randomx_sources src/aes_hash.cpp src/argon2_ref.c @@ -212,9 +214,14 @@ endif() set(RANDOMX_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/src" CACHE STRING "RandomX Include path") # Define variables for custom preprocessor definitions with default values +option(USE_HIDDEN_VISIBILITY "Include -fvisibility=hidden flag" OFF) set(RANDOMX_ARGON_MEMORY "" CACHE STRING "Set the RANDOMX_ARGON_MEMORY value") set(RANDOMX_DATASET_BASE_SIZE "" CACHE STRING "Set the RANDOMX_DATASET_BASE_SIZE value") +if(USE_HIDDEN_VISIBILITY) + add_compile_options("-fvisibility=hidden") +endif() + add_library(randomx ${randomx_sources}) # Apply the custom preprocessor definitions only if they are set diff --git a/src/randomx.cpp b/src/randomx.cpp index a08968e..8f55b88 100644 --- a/src/randomx.cpp +++ b/src/randomx.cpp @@ -145,7 +145,6 @@ extern "C" { } randomx_dataset *randomx_alloc_dataset(randomx_flags flags) { - //fail on 32-bit systems if DatasetSize is >= 4 GiB if (randomx::DatasetSize > std::numeric_limits::max()) { return nullptr; diff --git a/src/vm_interpreted.cpp b/src/vm_interpreted.cpp index 64243c3..8ebb432 100644 --- a/src/vm_interpreted.cpp +++ b/src/vm_interpreted.cpp @@ -54,7 +54,6 @@ namespace randomx { template void InterpretedVm::execute() { - NativeRegisterFile nreg; for(unsigned i = 0; i < RegisterCountFlt; ++i) @@ -71,7 +70,7 @@ namespace randomx { spAddr0 &= ScratchpadL3Mask64; spAddr1 ^= spMix >> 32; spAddr1 &= ScratchpadL3Mask64; - + for (unsigned i = 0; i < RegistersCount; ++i) nreg.r[i] ^= load64(scratchpad + spAddr0 + 8 * i); @@ -85,6 +84,7 @@ namespace randomx { mem.mx ^= nreg.r[config.readReg2] ^ nreg.r[config.readReg3]; mem.mx &= CacheLineAlignMask; + datasetPrefetch(datasetOffset + mem.mx); datasetRead(datasetOffset + mem.ma, nreg.r); std::swap(mem.mx, mem.ma);