Lines Matching refs:Chain

79 class Chain {  class
81 Chain(const Chain &) = delete;
82 Chain(Chain &&) = default;
83 Chain &operator=(const Chain &) = delete;
84 Chain &operator=(Chain &&) = default;
86 explicit Chain(size_t Id_, NodeId Node, size_t Samples_, size_t Size_) in Chain() function in llvm::bolt::__anonbf028ece0111::Chain
91 Edge *getEdge(Chain *Other) const { in getEdge()
92 for (std::pair<Chain *, Edge *> It : Edges) in getEdge()
98 void removeEdge(Chain *Other) { in removeEdge()
109 void addEdge(Chain *Other, Edge *Edge) { Edges.emplace_back(Other, Edge); } in addEdge()
111 void merge(Chain *Other) { in merge()
117 void mergeEdges(Chain *Other);
135 std::vector<std::pair<Chain *, Edge *>> Edges;
148 explicit Edge(Chain *SrcChain_, Chain *DstChain_, const Arc *A) in Edge()
151 void changeEndpoint(Chain *From, Chain *To) { in changeEndpoint()
163 void setMergeGain(Chain *PredChain, double ForwardGain, double BackwardGain) { in setMergeGain()
185 Chain *predChain() const { return IsGainForward ? SrcChain : DstChain; } in predChain()
187 Chain *succChain() const { return IsGainForward ? DstChain : SrcChain; } in succChain()
190 Chain *SrcChain{nullptr};
191 Chain *DstChain{nullptr};
203 void Chain::mergeEdges(Chain *Other) { in mergeEdges()
206 Chain *const DstChain = EdgeIt.first; in mergeEdges()
208 Chain *const TargetChain = DstChain == Other ? this : DstChain; in mergeEdges()
242 auto DensityComparator = [](const Chain *L, const Chain *R) { in run()
254 for (Chain *Chain : HotChains) in run()
255 Clusters.emplace_back(Cluster(Chain->Nodes, Cg)); in run()
310 for (Chain *&Chain : HotChains) { in initialize()
311 Chain->ShortCalls = shortCalls(Chain); in initialize()
312 Chain->Score = score(Chain); in initialize()
349 double shortCalls(Chain *Chain) const { in shortCalls()
350 Edge *Edge = Chain->getEdge(Chain); in shortCalls()
365 double shortCalls(Chain *ChainPred, Chain *ChainSucc, Edge *Edge) const { in shortCalls()
368 Chain *SrcChain = NodeChain[Arc->src()]; in shortCalls()
388 double score(Chain *Chain) const { in score()
389 double LongCalls = Chain->Samples - Chain->ShortCalls; in score()
390 return LongCalls * missProbability(Chain->density()); in score()
403 double mergeGain(Chain *ChainPred, Chain *ChainSucc, Edge *Edge) const { in mergeGain()
426 for (Chain *ChainPred : HotChains) { in runPassOne()
462 Chain *ChainPred = NodeChain[Arc->src()]; in runPassOne()
463 Chain *ChainSucc = NodeChain[Arc->dst()]; in runPassOne()
490 for (Chain *ChainPred : HotChains) { in runPassTwo()
492 Chain *ChainSucc = EdgeIt.first; in runPassTwo()
516 Chain *BestChainPred = BestEdge->predChain(); in runPassTwo()
517 Chain *BestChainSucc = BestEdge->succChain(); in runPassTwo()
522 for (std::pair<Chain *, Edge *> EdgeIt : BestChainPred->Edges) in runPassTwo()
524 for (std::pair<Chain *, Edge *> EdgeIt : BestChainSucc->Edges) in runPassTwo()
532 Chain *ChainSucc = EdgeIt.first; in runPassTwo()
549 void mergeChains(Chain *Into, Chain *From) { in mergeChains()
578 std::vector<Chain> AllChains;
581 std::vector<Chain *> HotChains;
587 std::vector<Chain *> NodeChain;