mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-26 21:20:37 +00:00
Implement the ExecutionEngine::getPointerToFunctionOrStub by forwarding the
request on to the TargetMachine if it supports the getJITStubForFunction method git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10431 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
65b05ce022
commit
993bdcec00
@ -66,6 +66,12 @@ public:
|
||||
///
|
||||
void *getPointerToFunction(Function *F);
|
||||
|
||||
/// getPointerToFunctionOrStub - If the specified function has been
|
||||
/// code-gen'd, return a pointer to the function. If not, compile it, or use
|
||||
/// a stub to implement lazy compilation if available.
|
||||
///
|
||||
void *getPointerToFunctionOrStub(Function *F);
|
||||
|
||||
/// recompileAndRelinkFunction - This method is used to force a function
|
||||
/// which has already been compiled, to be compiled again, possibly
|
||||
/// after it has been modified. Then the entry to the old copy is overwritten
|
||||
|
@ -77,6 +77,23 @@ void *VM::getPointerToFunction(Function *F) {
|
||||
return Addr;
|
||||
}
|
||||
|
||||
// getPointerToFunctionOrStub - If the specified function has been
|
||||
// code-gen'd, return a pointer to the function. If not, compile it, or use
|
||||
// a stub to implement lazy compilation if available.
|
||||
//
|
||||
void *VM::getPointerToFunctionOrStub(Function *F) {
|
||||
// If we have already code generated the function, just return the address.
|
||||
std::map<const GlobalValue*, void *>::iterator I = GlobalAddress.find(F);
|
||||
if (I != GlobalAddress.end()) return I->second;
|
||||
|
||||
// If the target supports "stubs" for functions, get a stub now.
|
||||
if (void *Ptr = TM.getJITStubForFunction(F, *MCE))
|
||||
return Ptr;
|
||||
|
||||
// Otherwise, if the target doesn't support it, just codegen the function.
|
||||
return getPointerToFunction(F);
|
||||
}
|
||||
|
||||
/// recompileAndRelinkFunction - This method is used to force a function
|
||||
/// which has already been compiled, to be compiled again, possibly
|
||||
/// after it has been modified. Then the entry to the old copy is overwritten
|
||||
|
@ -66,6 +66,12 @@ public:
|
||||
///
|
||||
void *getPointerToFunction(Function *F);
|
||||
|
||||
/// getPointerToFunctionOrStub - If the specified function has been
|
||||
/// code-gen'd, return a pointer to the function. If not, compile it, or use
|
||||
/// a stub to implement lazy compilation if available.
|
||||
///
|
||||
void *getPointerToFunctionOrStub(Function *F);
|
||||
|
||||
/// recompileAndRelinkFunction - This method is used to force a function
|
||||
/// which has already been compiled, to be compiled again, possibly
|
||||
/// after it has been modified. Then the entry to the old copy is overwritten
|
||||
|
Loading…
Reference in New Issue
Block a user