diff options
author | Chris Lattner <sabre@nondot.org> | 2003-12-20 02:03:14 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-12-20 02:03:14 +0000 |
commit | 2828970819ee6b056df8e676aa5e7950f1e1ff7e (patch) | |
tree | 748cbc43ee071830876597bccc738c2c9620a2fc /lib/Target/X86/X86CodeEmitter.cpp | |
parent | 4d326fa9bea5b80147edf14d1521fc41ce315275 (diff) |
A minor cleanup for better encapsulation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10545 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86CodeEmitter.cpp')
-rw-r--r-- | lib/Target/X86/X86CodeEmitter.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/lib/Target/X86/X86CodeEmitter.cpp b/lib/Target/X86/X86CodeEmitter.cpp index 1917e626a5..d783f89fb2 100644 --- a/lib/Target/X86/X86CodeEmitter.cpp +++ b/lib/Target/X86/X86CodeEmitter.cpp @@ -50,13 +50,17 @@ namespace { unsigned resolveFunctionReference(unsigned RetAddr); }; - JITResolver *TheJITResolver; + static JITResolver &getResolver(MachineCodeEmitter &MCE) { + static JITResolver *TheJITResolver = 0; + if (TheJITResolver == 0) + TheJITResolver = new JITResolver(MCE); + return *TheJITResolver; + } } + void *X86JITInfo::getJITStubForFunction(Function *F, MachineCodeEmitter &MCE) { - if (TheJITResolver == 0) - TheJITResolver = new JITResolver(MCE); - return (void*)((unsigned long)TheJITResolver->getLazyResolver(F)); + return (void*)((unsigned long)getResolver(MCE).getLazyResolver(F)); } void X86JITInfo::replaceMachineCodeForFunction (void *Old, void *New) { @@ -126,7 +130,8 @@ void JITResolver::CompilationCallback() { // Sanity check to make sure this really is a call instruction... assert(((unsigned char*)(intptr_t)RetAddr)[-1] == 0xE8 &&"Not a call instr!"); - unsigned NewVal = TheJITResolver->resolveFunctionReference(RetAddr); + JITResolver &JR = getResolver(*(MachineCodeEmitter*)0); + unsigned NewVal = JR.resolveFunctionReference(RetAddr); // Rewrite the call target... so that we don't fault every time we execute // the call. @@ -267,10 +272,8 @@ void Emitter::emitGlobalAddressForCall(GlobalValue *GV) { if (Address == 0) { // FIXME: this is JIT specific! - if (TheJITResolver == 0) - TheJITResolver = new JITResolver(MCE); - Address = TheJITResolver->addFunctionReference(MCE.getCurrentPCValue(), - cast<Function>(GV)); + Address = getResolver(MCE).addFunctionReference(MCE.getCurrentPCValue(), + cast<Function>(GV)); } emitMaybePCRelativeValue(Address, true); } @@ -288,9 +291,7 @@ void Emitter::emitGlobalAddressForPtr(GlobalValue *GV) { // if (Address == 0) { // FIXME: this is JIT specific! - if (TheJITResolver == 0) - TheJITResolver = new JITResolver(MCE); - Address = TheJITResolver->getLazyResolver((Function*)GV); + Address = getResolver(MCE).getLazyResolver((Function*)GV); } emitMaybePCRelativeValue(Address, false); |