11#ifndef PROTEUS_JITSTOREDCACHE_HPP
12#define PROTEUS_JITSTOREDCACHE_HPP
16#include <llvm/Bitcode/BitcodeWriter.h>
17#include <llvm/IR/Module.h>
18#include <llvm/Support/ErrorHandling.h>
19#include <llvm/Support/MemoryBuffer.h>
20#include <llvm/Support/MemoryBufferRef.h>
22#include <llvm/ADT/StringRef.h>
44 std::string Filebase =
45 StorageDirectory +
"/cache-jit-" + HashValue.
toString();
47 auto CacheBuf = MemoryBuffer::getFile(Filebase +
".o");
52 return std::move(CacheBuf.get());
55 void store(
HashT &HashValue, MemoryBufferRef ObjBufRef) {
58 std::string Filebase =
59 StorageDirectory +
"/cache-jit-" + HashValue.
toString();
61 saveToFile(Filebase +
".o", StringRef{ObjBufRef.getBufferStart(),
62 ObjBufRef.getBufferSize()});
67 printf(
"JitStorageCache hits %lu total %lu\n", Hits, Accesses);
72 uint64_t Accesses = 0;
73 const std::string StorageDirectory =
".proteus";
#define TIMESCOPE(x)
Definition TimeTracing.hpp:35
void saveToFile(llvm::StringRef Filepath, T &&Data)
Definition Utils.h:23
Definition Hashing.hpp:19
std::string toString() const
Definition Hashing.hpp:27
Definition JitStorageCache.hpp:36
void printStats()
Definition JitStorageCache.hpp:65
std::unique_ptr< MemoryBuffer > lookup(HashT &HashValue)
Definition JitStorageCache.hpp:40
JitStorageCache()
Definition JitStorageCache.hpp:38
void store(HashT &HashValue, MemoryBufferRef ObjBufRef)
Definition JitStorageCache.hpp:55
Definition JitEngine.cpp:20