summaryrefslogtreecommitdiffstats
path: root/tools/lli
diff options
context:
space:
mode:
authorFilip Pizlo <fpizlo@apple.com>2013-05-14 19:29:00 +0000
committerFilip Pizlo <fpizlo@apple.com>2013-05-14 19:29:00 +0000
commit13a3cf192887233fb9452ec5b7f841e4652c33c7 (patch)
tree68b95b8ef313e2cc3e179c9966a920afa855932b /tools/lli
parenta29a8965e206e689d292d7f2e42f2548770e30d3 (diff)
downloadexternal_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.cpp14
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);