Line data Source code
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 0 : 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
|