• Home
  • Raw
  • Download

Lines Matching full:branch

344 // Similar to ITrcGenElemIn, but add next instruction info, which is needed to get branch to addr
465 // OpenCSD may cache a list of InstrRange elements, making it inaccurate to get branch to in ProcessElement()
478 // It is based on the assumption that we only do immediate branch inside a binary, in ProcessElement()
540 // 2. Branch to addresses of direct branch instructions across binaries.
548 ETMBranchList branch; member
559 LOG(WARNING) << "branch list collection isn't accurate with non-zero speculation length"; in CheckConfigs()
565 LOG(WARNING) << "branch list collection will lose some data with return stack enabled"; in CheckConfigs()
584 // Flush branch when seeing an Addr packet. Because it isn't correct to concatenate in ProcessPacket()
593 // An atom packet contains a branch list. We may receive one or more atom packets in a row, in ProcessPacket()
599 // Flush branch when seeing a flush or reset operation. in ProcessPacket()
620 return; // Skip atom packets when we think a branch list is invalid. in ProcessAtomPacket()
622 if (data.branch.branch.empty()) { in ProcessAtomPacket()
623 // This is the first atom packet in a branch list. Check if we have tid and addr info to in ProcessAtomPacket()
624 // parse it and the following atom packets. If not, mark the branch list as invalid. in ProcessAtomPacket()
634 data.branch.dso = map->dso; in ProcessAtomPacket()
635 data.branch.addr = map->GetVaddrInFile(data.addr); in ProcessAtomPacket()
637 data.branch.addr |= 1; in ProcessAtomPacket()
642 data.branch.branch.push_back((bits & 1) == 1); in ProcessAtomPacket()
648 if (!data.branch.branch.empty()) { in FlushBranch()
649 callback_(data.branch); in FlushBranch()
650 data.branch.branch.clear(); in FlushBranch()
663 // packet shows whether the cpu decides to branch or not.
666 // to find the next branch instruction starting from an address.
937 // Loop until we find a branch instruction. in FindNextBranch()
993 const std::vector<bool>& branch = branch_p.first; in ConvertETMBranchMapToInstrRanges() local
997 for (bool b : branch) { in ConvertETMBranchMapToInstrRanges()
1010 // For OCSD_INSTR_BR_INDIRECT, instr.branch_addr points to old branch addresses. in ConvertETMBranchMapToInstrRanges()
1011 // So only use instr.branch_addr for direct branch instructions. in ConvertETMBranchMapToInstrRanges()
1022 // for branch instructions, b == true means branch taken. But for other instructions in ConvertETMBranchMapToInstrRanges()