diff --git a/CodeEmitter/CodeEmitter/Buffer.h b/CodeEmitter/CodeEmitter/Buffer.h index 472407343..602eeb674 100644 --- a/CodeEmitter/CodeEmitter/Buffer.h +++ b/CodeEmitter/CodeEmitter/Buffer.h @@ -53,6 +53,7 @@ public: if (!CurrentAlignment) { return; } + std::memset(CurrentOffset, 0, Size - CurrentAlignment); CurrentOffset += Size - CurrentAlignment; } diff --git a/FEXCore/Source/Interface/Core/JIT/JIT.cpp b/FEXCore/Source/Interface/Core/JIT/JIT.cpp index f74d1abe7..5afe8121a 100644 --- a/FEXCore/Source/Interface/Core/JIT/JIT.cpp +++ b/FEXCore/Source/Interface/Core/JIT/JIT.cpp @@ -1083,13 +1083,12 @@ CPUBackend::CompiledCode Arm64JITCore::CompileCode(uint64_t Entry, uint64_t Size // NOTE: 16-byte alignment of the new cursor offset must be preserved for block linking records SetBuffer(CurrentCodeBuffer->Ptr, CurrentCodeBuffer->AllocatedSize); - SetCursorOffset(AlignUp(CodeBuffers.LatestOffset, 16)); + SetCursorOffset(CodeBuffers.LatestOffset); + Align16B(); if ((GetCursorOffset() + TempSize) > CurrentCodeBuffer->UsableSize()) { CTX->ClearCodeCache(ThreadState); } - Align16B(); - CodeBuffers.LatestOffset = GetCursorOffset(); }