11#ifndef PROTEUS_JITCACHE_HPP
12#define PROTEUS_JITCACHE_HPP
19#include <llvm/ADT/StringRef.h>
36 auto It = CacheMap.find(HashValue);
37 if (It == CacheMap.end())
40 It->second.NumExecs++;
43 return It->second.FunctionPtr;
46 void insert(
HashT &HashValue, Function_t FunctionPtr, StringRef FnName) {
48 if (CacheMap.count(HashValue))
63 printf(
"[proteus][%s] MemoryCache rank %s hits %lu accesses %lu\n",
64 Label.c_str(), DistributedRank.c_str(), Hits, Accesses);
65 for (
const auto &[HashValue, JCE] : CacheMap) {
66 std::cout <<
"[proteus][" << Label <<
"] MemoryCache rank "
67 << DistributedRank <<
" HashValue " << HashValue.toString()
68 <<
" NumExecs " << JCE.NumExecs <<
" NumHits " << JCE.NumHits;
70 printf(
" FnName %s", JCE.FnName.c_str());
77 struct MemoryCacheEntry {
78 Function_t FunctionPtr;
84 std::unordered_map<HashT, MemoryCacheEntry> CacheMap;
86 uint64_t Accesses = 0;
87 const std::string Label;
88 const std::string DistributedRank;
#define TIMESCOPE(x)
Definition TimeTracing.hpp:59
std::string getDistributedRank()
Definition Utils.h:33
static Config & get()
Definition Config.hpp:300
bool ProteusDebugOutput
Definition Config.hpp:316
Definition Hashing.hpp:21
Definition MemoryCache.hpp:28
void printStats()
Definition MemoryCache.hpp:62
void insert(HashT &HashValue, Function_t FunctionPtr, StringRef FnName)
Definition MemoryCache.hpp:46
MemoryCache(const std::string &Label)
Definition MemoryCache.hpp:30
Function_t lookup(HashT &HashValue)
Definition MemoryCache.hpp:32
Definition ObjectCacheChain.cpp:26
void reportFatalError(const llvm::Twine &Reason, const char *FILE, unsigned Line)
Definition Error.cpp:14
Definition ObjectCache.hpp:27