ClearBlue
SEGReturnSite.h
1 /*
2  * SEGCallSite.h
3  *
4  * Qingkai
5  *
6  * This node is to model a call site.
7  */
8 
9 #ifndef IR_SEG_RETURNSITE_H
10 #define IR_SEG_RETURNSITE_H
11 
12 #include <llvm/IR/Instructions.h>
13 
14 #include "IR/SEG/SymbolicExprGraph.h"
15 #include "Persistence/PersistenceBasis.h"
16 
17 using namespace llvm;
18 
19 class SEGReturnSite : public SEGSiteBase {
20 public:
23  SEGReturnSite(PersistedSEGReturnSite *Site, SymbolicExprGraph *SEG)
24  : SEGSiteBase(Site, SEG) {}
25 
26  virtual void assembleSEGObject(std::map<int, SEGObject *> &FuncSEGObjMap) {
27  SEGSiteBase::assembleSEGObject(FuncSEGObjMap);
28  }
29 
30 private:
31  SEGReturnSite(Instruction *U, SymbolicExprGraph *G)
32  : SEGSiteBase(SEGOBJK_ReturnSite, U, G) {}
33 
34  friend class SymbolicExprGraph;
35  friend class IntraFalcon;
36  friend class MantaIntraFalcon;
37 
38 public:
39  virtual PersistedSEGObject *createPersistedObject() const {
40  PersistedSEGObject *PersistedObj = new PersistedSEGReturnSite;
41  return PersistedObj;
42  }
43 
44 public:
45  static bool classof(const SEGObject *N) {
46  return N->getKind() == SEGOBJK_ReturnSite;
47  }
48 };
49 
50 #endif
SymbolicExprGraph
Definition: SymbolicExprGraph.h:855
SEGReturnSite::SEGReturnSite
SEGReturnSite(PersistedSEGReturnSite *Site, SymbolicExprGraph *SEG)
Definition: SEGReturnSite.h:23
SEGReturnSite::assembleSEGObject
virtual void assembleSEGObject(std::map< int, SEGObject * > &FuncSEGObjMap)
Assemble the SEG object's related objects.
Definition: SEGReturnSite.h:26
SEGReturnSite
Definition: SEGReturnSite.h:19
SEGObject
Definition: SymbolicExprGraph.h:87
SEGSiteBase
Definition: SymbolicExprGraph.h:776
SEGSiteBase::assembleSEGObject
virtual void assembleSEGObject(std::map< int, SEGObject * > &FuncSEGObjMap)
Assemble the SEG object's related objects.
Definition: SymbolicExprGraph.cpp:674