Updated READMEs
[dyninst.git] / stackwalk / src / aarch64-swk.h
1 #ifndef aarch64_swk_h_
2 #define aarch64_swk_h_
3
4 #include "stackwalk/h/steppergroup.h"
5 #include "stackwalk/h/framestepper.h"
6
7 #include "common/h/dyntypes.h"
8
9 #include "common/src/lru_cache.h"
10
11 namespace Dyninst {
12 namespace Stackwalker {
13
14 class aarch64_LookupFuncStart : public FrameFuncHelper
15 {
16 private:
17    static std::map<Dyninst::PID, aarch64_LookupFuncStart*> all_func_starts;
18    aarch64_LookupFuncStart(ProcessState *proc_);
19    int ref_count;
20
21    void updateCache(Address addr, FrameFuncHelper::alloc_frame_t result);
22    bool checkCache(Address addr, FrameFuncHelper::alloc_frame_t &result);
23    // We need some kind of re-entrant safe synhronization before we can
24    // globally turn this caching on, but it would sure help things.
25    static const unsigned int cache_size = 64;
26    LRUCache<Address, FrameFuncHelper::alloc_frame_t> cache;
27 public:
28    static aarch64_LookupFuncStart *getLookupFuncStart(ProcessState *p);
29    void releaseMe();
30    virtual FrameFuncHelper::alloc_frame_t allocatesFrame(Address addr);
31    ~aarch64_LookupFuncStart();
32    static void clear_func_mapping(Dyninst::PID);
33 };
34
35 }
36 }
37
38
39 #endif