diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/ExecutionEngine/JITMemoryManager.h | 8 | ||||
-rw-r--r-- | include/llvm/System/Memory.h | 9 |
2 files changed, 15 insertions, 2 deletions
diff --git a/include/llvm/ExecutionEngine/JITMemoryManager.h b/include/llvm/ExecutionEngine/JITMemoryManager.h index e1f2763e1d..0d79d14d71 100644 --- a/include/llvm/ExecutionEngine/JITMemoryManager.h +++ b/include/llvm/ExecutionEngine/JITMemoryManager.h @@ -35,6 +35,14 @@ public: /// JIT Memory Manager if the client does not provide one to the JIT. static JITMemoryManager *CreateDefaultMemManager(); + /// setMemoryWritable - When code generation is in progress, + /// the code pages may need permissions changed. + virtual void setMemoryWritable(void) = 0; + + /// setMemoryExecutable - When code generation is done and we're ready to + /// start execution, the code pages may need permissions changed. + virtual void setMemoryExecutable(void) = 0; + //===--------------------------------------------------------------------===// // Global Offset Table Management //===--------------------------------------------------------------------===// diff --git a/include/llvm/System/Memory.h b/include/llvm/System/Memory.h index 86895e2317..4d0828b575 100644 --- a/include/llvm/System/Memory.h +++ b/include/llvm/System/Memory.h @@ -70,10 +70,15 @@ namespace sys { /// platforms. static void InvalidateInstructionCache(const void *Addr, size_t Len); - /// SetRXPrivilege - Before the JIT can run a block of code, it has to be + /// setExecutable - Before the JIT can run a block of code, it has to be /// given read and executable privilege. Return true if it is already r-x /// or the system is able to change its previlege. - static bool SetRXPrivilege(const void *Addr, size_t Size); + static bool setExecutable (MemoryBlock &M, std::string *ErrMsg = 0); + + /// setWritable - When adding to a block of code, the JIT may need + /// to mark a block of code as RW since the protections are on page + /// boundaries, and the JIT internal allocations are not page aligned. + static bool setWritable (MemoryBlock &M, std::string *ErrMsg = 0); }; } } |