diff options
author | Filip Pizlo <fpizlo@apple.com> | 2013-05-14 19:29:00 +0000 |
---|---|---|
committer | Filip Pizlo <fpizlo@apple.com> | 2013-05-14 19:29:00 +0000 |
commit | 13a3cf192887233fb9452ec5b7f841e4652c33c7 (patch) | |
tree | 68b95b8ef313e2cc3e179c9966a920afa855932b /tools/lli | |
parent | a29a8965e206e689d292d7f2e42f2548770e30d3 (diff) | |
download | external_llvm-13a3cf192887233fb9452ec5b7f841e4652c33c7.zip external_llvm-13a3cf192887233fb9452ec5b7f841e4652c33c7.tar.gz external_llvm-13a3cf192887233fb9452ec5b7f841e4652c33c7.tar.bz2 |
SectionMemoryManager shouldn't be a JITMemoryManager. Previously, the
EngineBuilder interface required a JITMemoryManager even if it was being used
to construct an MCJIT. But the MCJIT actually wants a RTDyldMemoryManager.
Consequently, the SectionMemoryManager, which is meant for MCJIT, derived
from the JITMemoryManager and then stubbed out a bunch of JITMemoryManager
methods that weren't relevant to the MCJIT.
This patch fixes the situation: it teaches the EngineBuilder that
RTDyldMemoryManager is a supertype of JITMemoryManager, and that it's
appropriate to pass a RTDyldMemoryManager instead of a JITMemoryManager if
we're using the MCJIT. This allows us to remove the stub methods from
SectionMemoryManager, and make SectionMemoryManager a direct subtype of
RTDyldMemoryManager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181820 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/lli')
-rw-r--r-- | tools/lli/lli.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp index 1866403..ac7db20 100644 --- a/tools/lli/lli.cpp +++ b/tools/lli/lli.cpp @@ -337,14 +337,14 @@ int main(int argc, char **argv, char * const *envp) { Mod->setTargetTriple(Triple::normalize(TargetTriple)); // Enable MCJIT if desired. - JITMemoryManager *JMM = 0; + RTDyldMemoryManager *RTDyldMM = 0; if (UseMCJIT && !ForceInterpreter) { builder.setUseMCJIT(true); if (RemoteMCJIT) - JMM = new RecordingMemoryManager(); + RTDyldMM = new RecordingMemoryManager(); else - JMM = new SectionMemoryManager(); - builder.setJITMemoryManager(JMM); + RTDyldMM = new SectionMemoryManager(); + builder.setMCJITMemoryManager(RTDyldMM); } else { if (RemoteMCJIT) { errs() << "error: Remote process execution requires -use-mcjit\n"; @@ -461,7 +461,7 @@ int main(int argc, char **argv, char * const *envp) { int Result; if (RemoteMCJIT) { - RecordingMemoryManager *MM = static_cast<RecordingMemoryManager*>(JMM); + RecordingMemoryManager *MM = static_cast<RecordingMemoryManager*>(RTDyldMM); // Everything is prepared now, so lay out our program for the target // address space, assign the section addresses to resolve any relocations, // and send it to the target. @@ -495,8 +495,8 @@ int main(int argc, char **argv, char * const *envp) { // invalidated will be known. (void)EE->getPointerToFunction(EntryFn); // Clear instruction cache before code will be executed. - if (JMM) - static_cast<SectionMemoryManager*>(JMM)->invalidateInstructionCache(); + if (RTDyldMM) + static_cast<SectionMemoryManager*>(RTDyldMM)->invalidateInstructionCache(); // Run main. Result = EE->runFunctionAsMain(EntryFn, InputArgv, envp); |