Lines Matching refs:ContextNode
227 struct ContextNode { struct in __anonf4e331660111::CallsiteContextGraph
265 std::vector<ContextNode *> Clones; argument
268 ContextNode *CloneOf = nullptr; argument
270 ContextNode(bool IsAllocation) : IsAllocation(IsAllocation), Call() {} in ContextNode() function
272 ContextNode(bool IsAllocation, CallInfo C) in ContextNode() argument
275 void addClone(ContextNode *Clone) { in addClone() argument
286 ContextNode *getOrigNode() { in getOrigNode() argument
292 void addOrUpdateCallerEdge(ContextNode *Caller, AllocationType AllocType,
295 ContextEdge *findEdgeFromCallee(const ContextNode *Callee);
296 ContextEdge *findEdgeFromCaller(const ContextNode *Caller);
317 friend raw_ostream &operator<<(raw_ostream &OS, const ContextNode &Node) { in operator <<()
326 ContextNode *Callee;
327 ContextNode *Caller;
336 ContextEdge(ContextNode *Callee, ContextNode *Caller, uint8_t AllocType, in ContextEdge()
354 void removeNoneTypeCalleeEdges(ContextNode *Node);
365 ContextNode *addAllocNode(CallInfo Call, const FuncTy *F);
369 void addStackNodesForMIB(ContextNode *AllocNode,
388 std::map<const ContextNode *, const FuncTy *> NodeToCallingFunc;
403 ContextNode *Node, DenseSet<const ContextNode *> &Visited,
420 void connectNewNode(ContextNode *NewNode, ContextNode *OrigNode,
439 MapVector<CallInfo, ContextNode *> &TailCallToContextNodeMap);
493 ContextNode *getNodeForInst(const CallInfo &C);
494 ContextNode *getNodeForAlloc(const CallInfo &C);
495 ContextNode *getNodeForStackId(uint64_t StackId);
519 ContextNode *
528 ContextNode *NewCallee,
535 void identifyClones(ContextNode *Node,
536 DenseSet<const ContextNode *> &Visited);
545 std::map<uint64_t, ContextNode *> StackEntryIdToContextNodeMap;
548 MapVector<CallInfo, ContextNode *> AllocationCallToContextNodeMap;
549 MapVector<CallInfo, ContextNode *> NonAllocationCallToContextNodeMap;
552 std::vector<std::unique_ptr<ContextNode>> NodeOwner;
562 using ContextNode = typedef
563 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode;
773 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
776 ContextNode *Node = getNodeForAlloc(C); in getNodeForInst()
784 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
791 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
810 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
811 addOrUpdateCallerEdge(ContextNode *Caller, AllocationType AllocType, in addOrUpdateCallerEdge()
828 DerivedCCG, FuncTy, CallTy>::removeNoneTypeCalleeEdges(ContextNode *Node) { in removeNoneTypeCalleeEdges()
842 CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
843 findEdgeFromCallee(const ContextNode *Callee) { in findEdgeFromCallee()
852 CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
853 findEdgeFromCaller(const ContextNode *Caller) { in findEdgeFromCaller()
861 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
872 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::
925 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
930 std::make_unique<ContextNode>(/*IsAllocation=*/true, Call)); in addAllocNode()
931 ContextNode *AllocNode = NodeOwner.back().get(); in addAllocNode()
946 ContextNode *AllocNode, CallStack<NodeT, IteratorT> &StackContext, in addStackNodesForMIB()
962 ContextNode *PrevNode = AllocNode; in addStackNodesForMIB()
971 ContextNode *StackNode = getNodeForStackId(StackId); in addStackNodesForMIB()
974 std::make_unique<ContextNode>(/*IsAllocation=*/false)); in addStackNodesForMIB()
1020 auto UpdateCallers = [&](ContextNode *Node, in propagateDuplicateContextIds()
1027 ContextNode *NextNode = Edge->Caller; in propagateDuplicateContextIds()
1053 ContextNode *NewNode, ContextNode *OrigNode, bool TowardsCallee) { in connectNewNode()
1104 assignStackNodesPostOrder(ContextNode *Node, in assignStackNodesPostOrder()
1105 DenseSet<const ContextNode *> &Visited, in assignStackNodesPostOrder()
1155 ContextNode *LastNode = getNodeForStackId(LastId); in assignStackNodesPostOrder()
1168 ContextNode *FirstNode = getNodeForStackId(Ids[0]); in assignStackNodesPostOrder()
1178 ContextNode *PrevNode = nullptr; in assignStackNodesPostOrder()
1180 ContextNode *CurNode = getNodeForStackId(Id); in assignStackNodesPostOrder()
1206 std::make_unique<ContextNode>(/*IsAllocation=*/false, Call)); in assignStackNodesPostOrder()
1207 ContextNode *NewNode = NodeOwner.back().get(); in assignStackNodesPostOrder()
1227 ContextNode *CurNode = getNodeForStackId(Id); in assignStackNodesPostOrder()
1309 ContextNode *LastNode = getNodeForStackId(LastId); in updateStackNodes()
1332 ContextNode *PrevNode = LastNode; in updateStackNodes()
1333 ContextNode *CurNode = LastNode; in updateStackNodes()
1438 DenseSet<const ContextNode *> Visited; in updateStackNodes()
1518 ContextNode *Node = getNodeForStackId(StackId); in getStackIdsWithContextNodes()
1678 MapVector<CallInfo, ContextNode *> TailCallToContextNodeMap; in handleCallsitesWithMultipleTargets()
1730 MapVector<CallInfo, ContextNode *> &TailCallToContextNodeMap) { in calleesMatch()
1749 auto AddEdge = [Edge, &EI](ContextNode *Caller, ContextNode *Callee) { in calleesMatch()
1780 ContextNode *NewNode = nullptr; in calleesMatch()
1791 std::make_unique<ContextNode>(/*IsAllocation=*/false, NewCall)); in calleesMatch()
2068 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::dump() in dump()
2075 void CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode::print( in print()
2154 static void checkNode(const ContextNode<DerivedCCG, FuncTy, CallTy> *Node, in checkNode()
2204 using NodeRef = const ContextNode<DerivedCCG, FuncTy, CallTy> *;
2206 using NodePtrTy = std::unique_ptr<ContextNode<DerivedCCG, FuncTy, CallTy>>;
2226 static const ContextNode<DerivedCCG, FuncTy, CallTy> *
2348 typename CallsiteContextGraph<DerivedCCG, FuncTy, CallTy>::ContextNode *
2351 ContextNode *Node = Edge->Callee; in moveEdgeToNewCalleeClone()
2353 std::make_unique<ContextNode>(Node->IsAllocation, Node->Call)); in moveEdgeToNewCalleeClone()
2354 ContextNode *Clone = NodeOwner.back().get(); in moveEdgeToNewCalleeClone()
2365 ContextNode *NewCallee, EdgeIter *CallerEdgeI, in moveEdgeToExistingCalleeClone()
2371 ContextNode *OldCallee = Edge->Callee; in moveEdgeToExistingCalleeClone()
2432 DenseSet<const ContextNode *> Visited; in identifyClones()
2447 ContextNode *Node, DenseSet<const ContextNode *> &Visited) { in identifyClones()
2567 ContextNode *Clone = nullptr; in identifyClones()
2766 DenseMap<ContextNode *, FuncInfo> CallsiteToCalleeFuncCloneMap; in assignFunctions()
2770 auto RecordCalleeFuncOfCallsite = [&](ContextNode *Caller, in assignFunctions()
2785 ContextNode *Node = getNodeForInst(Call); in assignFunctions()
2796 std::map<FuncInfo, ContextNode *> FuncCloneToCurNodeCloneMap; in assignFunctions()
2802 ContextNode *CallsiteClone, in assignFunctions()
2818 std::deque<ContextNode *> ClonesWorklist; in assignFunctions()
2830 ContextNode *Clone = ClonesWorklist.front(); in assignFunctions()
2946 ContextNode *Callee = CalleeEdge->Callee; in assignFunctions()
2952 ContextNode *NewClone = moveEdgeToNewCalleeClone(CalleeEdge); in assignFunctions()
3000 std::map<FuncInfo, ContextNode *> FuncCloneToNewCallsiteCloneMap; in assignFunctions()
3054 ContextNode *NewClone = in assignFunctions()
3061 ContextNode *NewClone = moveEdgeToNewCalleeClone(Edge, &EI); in assignFunctions()
3145 auto UpdateCalls = [&](ContextNode *Node, in assignFunctions()
3146 DenseSet<const ContextNode *> &Visited, in assignFunctions()
3180 DenseSet<const ContextNode *> Visited; in assignFunctions()