mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-14 17:00:52 +02:00
35 lines
1.0 KiB
C++
35 lines
1.0 KiB
C++
#pragma once
|
|
#include <llvm/ExecutionEngine/RTDyldMemoryManager.h>
|
|
|
|
namespace FEXCore::CPU {
|
|
|
|
class LLVMMemoryManager final : public llvm::RTDyldMemoryManager {
|
|
public:
|
|
LLVMMemoryManager();
|
|
~LLVMMemoryManager();
|
|
// uint64_t getSymbolAddress(const std::string &Name) override;
|
|
|
|
llvm::JITSymbol findSymbol(const std::string &Name) override;
|
|
|
|
uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
|
|
unsigned SectionID,
|
|
llvm::StringRef SectionName) override;
|
|
|
|
uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
|
|
unsigned SectionID,
|
|
llvm::StringRef SectionName,
|
|
bool IsReadOnly) override;
|
|
|
|
bool finalizeMemory(std::string *ErrMsg) override;
|
|
|
|
size_t GetLastCodeAllocation() { return LastCodeSize; }
|
|
|
|
private:
|
|
constexpr static size_t CODE_SIZE = 128 * 1024 * 1024;
|
|
uintptr_t CodeMemory {};
|
|
size_t AllocateOffset {};
|
|
|
|
size_t LastCodeSize {};
|
|
};
|
|
}
|