Make DataLayout Non-Optional in the Module
[oota-llvm.git] / include / llvm / ExecutionEngine / ObjectCache.h
index aa200fbcdd68b25913e5be00738d458fc33237cc..cc01a4e58999e8699e412d4c97e7ddd7e3d94fe6 100644 (file)
@@ -7,8 +7,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIB_EXECUTIONENGINE_OBJECTCACHE_H
-#define LLVM_LIB_EXECUTIONENGINE_OBJECTCACHE_H
+#ifndef LLVM_EXECUTIONENGINE_OBJECTCACHE_H
+#define LLVM_EXECUTIONENGINE_OBJECTCACHE_H
 
 #include "llvm/Support/MemoryBuffer.h"
 
@@ -20,19 +20,19 @@ class Module;
 /// ExecutionEngine for the purpose of avoiding compilation for Modules that
 /// have already been compiled and an object file is available.
 class ObjectCache {
+  virtual void anchor();
 public:
   ObjectCache() { }
 
   virtual ~ObjectCache() { }
 
   /// notifyObjectCompiled - Provides a pointer to compiled code for Module M.
-  virtual void notifyObjectCompiled(const Module *M, const MemoryBuffer *Obj) = 0;
+  virtual void notifyObjectCompiled(const Module *M, MemoryBufferRef Obj) = 0;
 
-  /// getObjectCopy - Returns a pointer to a newly allocated MemoryBuffer that
-  /// contains the object which corresponds with Module M, or 0 if an object is
-  /// not available. The caller owns both the MemoryBuffer returned by this
-  /// and the memory it references.
-  virtual MemoryBuffer* getObject(const Module* M) = 0;
+  /// Returns a pointer to a newly allocated MemoryBuffer that contains the
+  /// object which corresponds with Module M, or 0 if an object is not
+  /// available.
+  virtual std::unique_ptr<MemoryBuffer> getObject(const Module* M) = 0;
 };
 
 }