From e74573f81f1b38b4e606b52c39165737656c7f57 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Mon, 1 Feb 2021 22:36:11 +0100 Subject: [PATCH] Fixed code allocation for ARM --- src/crypto/randomx/jit_compiler_a64.cpp | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/crypto/randomx/jit_compiler_a64.cpp b/src/crypto/randomx/jit_compiler_a64.cpp index da1d2471..fda829be 100644 --- a/src/crypto/randomx/jit_compiler_a64.cpp +++ b/src/crypto/randomx/jit_compiler_a64.cpp @@ -108,6 +108,7 @@ JitCompilerA64::JitCompilerA64(bool hugePagesEnable, bool) : hugePages(hugePagesJIT && hugePagesEnable), literalPos(ImulRcpLiteralsEnd) { + allocate(CodeSize); } JitCompilerA64::~JitCompilerA64() @@ -117,13 +118,8 @@ JitCompilerA64::~JitCompilerA64() void JitCompilerA64::generateProgram(Program& program, ProgramConfiguration& config, uint32_t) { - if (!allocatedSize) { - allocate(CodeSize); - } #ifdef XMRIG_SECURE_JIT - else { - enableWriting(); - } + enableWriting(); #endif uint32_t codePos = MainLoopBegin + 4; @@ -177,13 +173,8 @@ void JitCompilerA64::generateProgram(Program& program, ProgramConfiguration& con void JitCompilerA64::generateProgramLight(Program& program, ProgramConfiguration& config, uint32_t datasetOffset) { - if (!allocatedSize) { - allocate(CodeSize); - } #ifdef XMRIG_SECURE_JIT - else { - enableWriting(); - } + enableWriting(); #endif uint32_t codePos = MainLoopBegin + 4; @@ -244,8 +235,12 @@ void JitCompilerA64::generateProgramLight(Program& program, ProgramConfiguration template void JitCompilerA64::generateSuperscalarHash(SuperscalarProgram(&programs)[N]) { - if (!allocatedSize) { - allocate(CodeSize + CalcDatasetItemSize()); + const size_t requiredSize = CodeSize + CalcDatasetItemSize(); + if (allocatedSize < requiredSize) { + if (allocatedSize) { + freePagedMemory(code, allocatedSize); + } + allocate(requiredSize); } #ifdef XMRIG_SECURE_JIT else {