Home | History | Annotate | Download | only in ExecutionEngine
      1 //===-- ObjectCache.h - Class definition for the ObjectCache ----*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #ifndef LLVM_EXECUTIONENGINE_OBJECTCACHE_H
     11 #define LLVM_EXECUTIONENGINE_OBJECTCACHE_H
     12 
     13 #include "llvm/Support/MemoryBuffer.h"
     14 #include <memory>
     15 
     16 namespace llvm {
     17 
     18 class Module;
     19 
     20 /// This is the base ObjectCache type which can be provided to an
     21 /// ExecutionEngine for the purpose of avoiding compilation for Modules that
     22 /// have already been compiled and an object file is available.
     23 class ObjectCache {
     24   virtual void anchor();
     25 
     26 public:
     27   ObjectCache() = default;
     28 
     29   virtual ~ObjectCache() = default;
     30 
     31   /// notifyObjectCompiled - Provides a pointer to compiled code for Module M.
     32   virtual void notifyObjectCompiled(const Module *M, MemoryBufferRef Obj) = 0;
     33 
     34   /// Returns a pointer to a newly allocated MemoryBuffer that contains the
     35   /// object which corresponds with Module M, or 0 if an object is not
     36   /// available.
     37   virtual std::unique_ptr<MemoryBuffer> getObject(const Module* M) = 0;
     38 };
     39 
     40 } // end namespace llvm
     41 
     42 #endif // LLVM_EXECUTIONENGINE_OBJECTCACHE_H
     43