add two new virtual functions:
authorChris Lattner <sabre@nondot.org>
Mon, 8 Dec 2003 08:22:01 +0000 (08:22 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 8 Dec 2003 08:22:01 +0000 (08:22 +0000)
  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

include/llvm/ExecutionEngine/ExecutionEngine.h

index 5dd74b7cdedf295fe459cd885e9418f807b8fdf8..f6f725a78a360da336ccd8996122199c7bfe59b4 100644 (file)
@@ -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);