mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-28 03:25:23 +00:00
Streamlined memory manager hierarchy for MCJIT and RuntimeDyld.
Patch by Ashok Thirumurthi git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167192 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -10,7 +10,9 @@
|
||||
#ifndef LLVM_EXECUTION_ENGINE_JIT_MEMMANAGER_H
|
||||
#define LLVM_EXECUTION_ENGINE_JIT_MEMMANAGER_H
|
||||
|
||||
#include "llvm/ExecutionEngine/RuntimeDyld.h"
|
||||
#include "llvm/Support/DataTypes.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace llvm {
|
||||
@@ -22,7 +24,7 @@ namespace llvm {
|
||||
/// memory for the code generated by the JIT. This can be reimplemented by
|
||||
/// clients that have a strong desire to control how the layout of JIT'd memory
|
||||
/// works.
|
||||
class JITMemoryManager {
|
||||
class JITMemoryManager : public RTDyldMemoryManager {
|
||||
protected:
|
||||
bool HasGOT;
|
||||
|
||||
@@ -47,17 +49,6 @@ public:
|
||||
/// debugging, and may be turned on by default in debug mode.
|
||||
virtual void setPoisonMemory(bool poison) = 0;
|
||||
|
||||
/// getPointerToNamedFunction - This method returns the address of the
|
||||
/// specified function. As such it is only useful for resolving library
|
||||
/// symbols, not code generated symbols.
|
||||
///
|
||||
/// If AbortOnFailure is false and no function with the given name is
|
||||
/// found, this function silently returns a null pointer. Otherwise,
|
||||
/// it prints a message to stderr and aborts.
|
||||
///
|
||||
virtual void *getPointerToNamedFunction(const std::string &Name,
|
||||
bool AbortOnFailure = true) = 0;
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
// Global Offset Table Management
|
||||
//===--------------------------------------------------------------------===//
|
||||
@@ -112,22 +103,6 @@ public:
|
||||
virtual void endFunctionBody(const Function *F, uint8_t *FunctionStart,
|
||||
uint8_t *FunctionEnd) = 0;
|
||||
|
||||
/// allocateCodeSection - Allocate a memory block of (at least) the given
|
||||
/// size suitable for executable code. The SectionID is a unique identifier
|
||||
/// assigned by the JIT and passed through to the memory manager for
|
||||
/// the instance class to use if it needs to communicate to the JIT about
|
||||
/// a given section after the fact.
|
||||
virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
|
||||
unsigned SectionID) = 0;
|
||||
|
||||
/// allocateDataSection - Allocate a memory block of (at least) the given
|
||||
/// size suitable for data. The SectionID is a unique identifier
|
||||
/// assigned by the JIT and passed through to the memory manager for
|
||||
/// the instance class to use if it needs to communicate to the JIT about
|
||||
/// a given section after the fact.
|
||||
virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
|
||||
unsigned SectionID) = 0;
|
||||
|
||||
/// allocateSpace - Allocate a memory block of the given size. This method
|
||||
/// cannot be called between calls to startFunctionBody and endFunctionBody.
|
||||
virtual uint8_t *allocateSpace(intptr_t Size, unsigned Alignment) = 0;
|
||||
|
Reference in New Issue
Block a user