Lines Matching refs:ChainPred
365 double shortCalls(Chain *ChainPred, Chain *ChainSucc, Edge *Edge) const { in shortCalls() argument
371 if (SrcChain == ChainPred) { in shortCalls()
373 DstAddr = Addr[Arc->dst()] + ChainPred->Size; in shortCalls()
376 Addr[Arc->src()] + uint64_t(Arc->avgCallOffset()) + ChainPred->Size; in shortCalls()
382 Calls += ChainPred->ShortCalls; in shortCalls()
403 double mergeGain(Chain *ChainPred, Chain *ChainSucc, Edge *Edge) const { in mergeGain() argument
405 double CurScore = ChainPred->Score + ChainSucc->Score; in mergeGain()
408 double LongCalls = ChainPred->Samples + ChainSucc->Samples - in mergeGain()
409 shortCalls(ChainPred, ChainSucc, Edge); in mergeGain()
410 const double MergedSamples = ChainPred->Samples + ChainSucc->Samples; in mergeGain()
411 const double MergedSize = ChainPred->Size + ChainSucc->Size; in mergeGain()
416 Gain /= std::min(ChainPred->Size, ChainSucc->Size); in mergeGain()
426 for (Chain *ChainPred : HotChains) { in runPassOne()
427 NodeId F = ChainPred->Nodes.back(); in runPassOne()
462 Chain *ChainPred = NodeChain[Arc->src()]; in runPassOne() local
464 if (ChainPred == ChainSucc) in runPassOne()
466 if (ChainPred->Nodes.back() == Arc->src() && in runPassOne()
468 mergeChains(ChainPred, ChainSucc); in runPassOne()
490 for (Chain *ChainPred : HotChains) { in runPassTwo()
491 for (auto EdgeIt : ChainPred->Edges) { in runPassTwo()
495 if (ChainPred == ChainSucc) in runPassTwo()
502 auto ForwardGain = mergeGain(ChainPred, ChainSucc, ChainEdge); in runPassTwo()
503 auto BackwardGain = mergeGain(ChainSucc, ChainPred, ChainEdge); in runPassTwo()
504 ChainEdge->setMergeGain(ChainPred, ForwardGain, BackwardGain); in runPassTwo()