Exemple #1
0
void printTopFuncs() {
    if (!nTopFuncs) return;
    TransToFuncMapper funcMapper(g_transData);
    PerfEventsMap<FuncId> funcPerfEvents = transPerfEvents.mapTo(funcMapper);
    funcPerfEvents.printEventsSummary(sortBy,
                                      "FuncId",
                                      nTopFuncs,
                                      verboseStats,
                                      helpersMinPercentage);
}
Exemple #2
0
void printTopTrans() {
  if (!nTopTrans) return;

  // The summary currently includes all translations, so it's misleading
  // if we're filtering a specific kind of translations or address range.
  // It also doesn't sort by density, so do print it if sortByDensity is set.
  if (kindFilter == "all" && minAddr == 0 && maxAddr == (TCA)-1 &&
      !sortByDensity) {
    transPerfEvents.printEventsSummary(sortBy,
                                       "TransId",
                                       nTopTrans,
                                       verboseStats,
                                       helpersMinPercentage);
  }

  // Sort and print the top translations.
  std::vector<TransID> transIds;

  for (TransID t = 0; t < NTRANS; t++) {
    if (TREC(t)->isValid() &&
        (kindFilter == "all" || kindFilter == show(TREC(t)->kind).c_str()) &&
        ((minAddr <= TREC(t)->aStart     && TREC(t)->aStart      <= maxAddr) ||
         (minAddr <= TREC(t)->acoldStart && TREC(t)->acoldStart <= maxAddr))) {
      transIds.push_back(t);
    }
  }

  CompTrans compTrans(transPerfEvents, sortBy);
  sort(transIds.begin(), transIds.end(), compTrans);

  size_t nPrint = nTopTrans;
  if (transIds.size() < nTopTrans) {
    fprintf(stderr, "Warning: too few translations selected (%lu)\n",
            transIds.size());
    nPrint = transIds.size();
  }
  for (size_t i = 0; i < nPrint; i++) printTrans(transIds[i]);
}
Exemple #3
0
void printBytecodeStats(const OfflineTransData* tdata,
                        const PerfEventsMap<TCA>& events,
                        PerfEventType etype) {

    if (!g_repo) error("printBytecodeStats: null repo");
    if (!tdata)  error("printBytecodeStats: null g_transData");

    AddrToBcMapper bcMapper(tdata);
    PerfEventsMap<ExtOpcode> bcPerfEvents = events.mapTo(bcMapper);

    std::map<ExtOpcode,std::string> opcodeToName;
    PerfEventsMap<ExtOpcode>::const_iterator it;

    for (it = bcPerfEvents.begin(); it != bcPerfEvents.end(); it++) {
        opcodeToName[it->first] = extOpcodeToString(it->first);
    }

    bcPerfEvents.printEventsSummary(etype,
                                    "Opcode",
                                    PerfEventsMap<ExtOpcode>::kAllEntries,
                                    verboseStats,
                                    helpersMinPercentage,
                                    opcodeToName);
}