Proteus
Programmable JIT compilation and optimization for C/C++ using LLVM
Loading...
Searching...
No Matches
JitEngineHost.hpp
Go to the documentation of this file.
1//===-- JitEngineHost.hpp -- JIT Engine for CPU header --===//
2//
3// Part of Proteus Project, under the Apache License v2.0 with LLVM Exceptions.
4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5//
6//===----------------------------------------------------------------------===//
7//
8// Implements the JitEngine interface for dynamic compilation and optimization
9// of CPU code.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef PROTEUS_JITENGINEHOST_HPP
14#define PROTEUS_JITENGINEHOST_HPP
15
16#include <string>
17
18#include <llvm/ExecutionEngine/Orc/LLJIT.h>
19
24#include "proteus/JitEngine.hpp"
25
26namespace proteus {
27
28using namespace llvm;
29
30class JitEngineHost : public JitEngine {
31public:
32 std::unique_ptr<orc::LLJIT> LLJITPtr;
34
35 static JitEngineHost &instance();
36
37 static void dumpSymbolInfo(const object::ObjectFile &LoadedObj,
38 const RuntimeDyld::LoadedObjectInfo &ObjInfo);
39 static void notifyLoaded(orc::MaterializationResponsibility &R,
40 const object::ObjectFile &Obj,
41 const RuntimeDyld::LoadedObjectInfo &LOI);
43
44 void specializeIR(Module &M, StringRef FnName, StringRef Suffix,
46
47 void *compileAndLink(StringRef FnName, char *IR, int IRSize, void **Args,
49
50 std::unique_ptr<MemoryBuffer> compileOnly(Module &M,
51 bool DisableIROpt = false);
52
54
55 void *getFunctionAddress(StringRef FnName, CompiledLibrary &Library);
56
57private:
59 void addStaticLibrarySymbols();
60 MemoryCache<void *> CodeCache{"JitEngineHost"};
61 ObjectCacheChain LibraryCache{"JitEngineHost"};
62};
63
64} // namespace proteus
65
66#endif
char * IR
Definition CompilerInterfaceHost.cpp:20
char int void ** Args
Definition CompilerInterfaceHost.cpp:20
char int IRSize
Definition CompilerInterfaceHost.cpp:20
ArrayRef< RuntimeConstantInfo * > RCInfoArray
Definition CompilerInterfaceHost.cpp:24
Definition JitEngineHost.hpp:30
std::unique_ptr< orc::LLJIT > LLJITPtr
Definition JitEngineHost.hpp:32
void specializeIR(Module &M, StringRef FnName, StringRef Suffix, ArrayRef< RuntimeConstant > RCArray)
Definition JitEngineHost.cpp:133
std::unique_ptr< MemoryBuffer > compileOnly(Module &M, bool DisableIROpt=false)
Definition JitEngineHost.cpp:277
~JitEngineHost()
Definition JitEngineHost.cpp:128
void loadCompiledLibrary(CompiledLibrary &Library)
Definition JitEngineHost.cpp:320
void * getFunctionAddress(StringRef FnName, CompiledLibrary &Library)
Definition JitEngineHost.cpp:355
static void dumpSymbolInfo(const object::ObjectFile &LoadedObj, const RuntimeDyld::LoadedObjectInfo &ObjInfo)
Definition JitEngineHost.cpp:80
static JitEngineHost & instance()
Definition JitEngineHost.cpp:43
static void notifyLoaded(orc::MaterializationResponsibility &R, const object::ObjectFile &Obj, const RuntimeDyld::LoadedObjectInfo &LOI)
Definition JitEngineHost.cpp:122
ExitOnError ExitOnErr
Definition JitEngineHost.hpp:33
void * compileAndLink(StringRef FnName, char *IR, int IRSize, void **Args, ArrayRef< RuntimeConstantInfo * > RCInfoArray)
Definition JitEngineHost.cpp:196
Definition JitEngine.hpp:31
Definition MemoryCache.hpp:28
Definition ObjectCacheChain.hpp:30
Definition Helpers.h:141
Definition ObjectCacheChain.cpp:26
T getRuntimeConstantValue(void *Arg)
Definition CompilerInterfaceRuntimeConstantInfo.h:113
Definition CompiledLibrary.hpp:18