diff options
author | Lang Hames <lhames@gmail.com> | 2016-02-10 01:02:33 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2016-02-10 01:02:33 +0000 |
commit | 4f8194e81d72bab350480fce872e0af115a4dcbf (patch) | |
tree | dbddd750ce68b36e45b589ec568662ad5f46c0e0 /llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp | |
parent | 5fd17ab1b093f6b59aabb27f6c2c2278e65c2707 (diff) | |
download | bcm5719-llvm-4f8194e81d72bab350480fce872e0af115a4dcbf.tar.gz bcm5719-llvm-4f8194e81d72bab350480fce872e0af115a4dcbf.zip |
[Orc] Add lazy-JITting support for i386.
This patch adds a new class, OrcI386, which contains the hooks needed to
support lazy-JITing on i386 (currently only for Pentium 2 or above, as the JIT
re-entry code uses the FXSAVE/FXRSTOR instructions).
Support for i386 is enabled in the LLI lazy JIT and the Orc C API, and
regression and unit tests are enabled for this architecture.
llvm-svn: 260338
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp index 956daae372d..412e605fc0b 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp +++ b/llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.cpp @@ -22,6 +22,11 @@ OrcCBindingsStack::createCompileCallbackMgr(Triple T) { switch (T.getArch()) { default: return nullptr; + case Triple::x86: { + typedef orc::LocalJITCompileCallbackManager<orc::OrcI386> CCMgrT; + return llvm::make_unique<CCMgrT>(0); + }; + case Triple::x86_64: { typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64> CCMgrT; return llvm::make_unique<CCMgrT>(0); @@ -34,6 +39,12 @@ OrcCBindingsStack::createIndirectStubsMgrBuilder(Triple T) { switch (T.getArch()) { default: return nullptr; + case Triple::x86: + return [](){ + return llvm::make_unique< + orc::LocalIndirectStubsManager<orc::OrcI386>>(); + }; + case Triple::x86_64: return [](){ return llvm::make_unique< |