diff options
author | Chris Lattner <sabre@nondot.org> | 2003-12-08 08:22:01 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-12-08 08:22:01 +0000 |
commit | d71a03337021cab34e001438150d0005085e7740 (patch) | |
tree | 04ca6b8da05d163fddf4a295f9507a6d1b916eb4 | |
parent | c0e1b071b98b2c76d83e6b25225822aaa5724db0 (diff) | |
download | bcm5719-llvm-d71a03337021cab34e001438150d0005085e7740.tar.gz bcm5719-llvm-d71a03337021cab34e001438150d0005085e7740.zip |
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
llvm-svn: 10319
-rw-r--r-- | llvm/include/llvm/ExecutionEngine/ExecutionEngine.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h b/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h index 5dd74b7cded..f6f725a78a3 100644 --- a/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h +++ b/llvm/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); |