From: Chris Lattner Date: Mon, 8 Dec 2003 08:22:01 +0000 (+0000) Subject: add two new virtual functions: X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=18cb4c3c747ac2439ca9fb1218edd8993df69d7a;hp=c19aadee66b744311afe6e420847e80822a765f2;p=oota-llvm.git add two new virtual functions: The first returns a function pointer or a stub if it's not already generated The second exposes what was previously JIT specific state to general clients git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10319 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/ExecutionEngine/ExecutionEngine.h b/include/llvm/ExecutionEngine/ExecutionEngine.h index 5dd74b7cded..f6f725a78a3 100644 --- a/include/llvm/ExecutionEngine/ExecutionEngine.h +++ b/include/llvm/ExecutionEngine/ExecutionEngine.h @@ -86,9 +86,26 @@ public: // virtual void *getPointerToFunction(Function *F) = 0; + // 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. + // + virtual void *getPointerToFunctionOrStub(Function *F) { + // Default implementation, just codegen the function. + return getPointerToFunction(F); + } + void StoreValueToMemory(GenericValue Val, GenericValue *Ptr, const Type *Ty); void InitializeMemory(const Constant *Init, void *Addr); + /// 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 + /// with a branch to the new copy. If there was no old copy, this acts + /// just like VM::getPointerToFunction(). + /// + virtual void *recompileAndRelinkFunction(Function *F) = 0; + protected: void emitGlobals(); GenericValue getConstantValue(const Constant *C);