summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86JITInfo.cpp
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-01-04 10:46:51 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-01-04 10:46:51 +0000
commit49ff8ecd0347364505a86e4f04d10de841b71d48 (patch)
tree0facf85f499ec70ed1f7e2d2833be5911d558e9d /llvm/lib/Target/X86/X86JITInfo.cpp
parent118ae4cd61b35e44ce29da62155780cb0da5b7a5 (diff)
downloadbcm5719-llvm-49ff8ecd0347364505a86e4f04d10de841b71d48.tar.gz
bcm5719-llvm-49ff8ecd0347364505a86e4f04d10de841b71d48.zip
X86 PIC JIT support fixes: encoding bugs, add lazy pointer stubs support.
llvm-svn: 45575
Diffstat (limited to 'llvm/lib/Target/X86/X86JITInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86JITInfo.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86JITInfo.cpp b/llvm/lib/Target/X86/X86JITInfo.cpp
index af1a8b89474..d5d3cda2dc6 100644
--- a/llvm/lib/Target/X86/X86JITInfo.cpp
+++ b/llvm/lib/Target/X86/X86JITInfo.cpp
@@ -380,6 +380,18 @@ X86JITInfo::getLazyResolverFunction(JITCompilerFn F) {
return X86CompilationCallback;
}
+void *X86JITInfo::emitGlobalValueLazyPtr(void *GV, MachineCodeEmitter &MCE) {
+#ifdef __x86_64__
+ MCE.startFunctionStub(8, 8);
+ MCE.emitWordLE(((unsigned *)&GV)[0]);
+ MCE.emitWordLE(((unsigned *)&GV)[1]);
+#else
+ MCE.startFunctionStub(4, 4);
+ MCE.emitWordLE((unsigned)GV);
+#endif
+ return MCE.finishFunctionStub(0);
+}
+
void *X86JITInfo::emitFunctionStub(void *Fn, MachineCodeEmitter &MCE) {
// Note, we cast to intptr_t here to silence a -pedantic warning that
// complains about casting a function pointer to a normal pointer.
OpenPOWER on IntegriCloud