Exemple #1
0
PrologueCallersRec* ProfData::findPrologueCallersRec(const Func* func,
                                                     int nArgs) const {
  TransID tid = prologueTransId(func, nArgs);
  if (tid == InvalidID) {
    assert(RuntimeOption::EvalJitPGOHotOnly && !(func->attrs() & AttrHot));
    return nullptr;
  }
  assert(transKind(tid) == TransProflogue);
  PrologueCallersRec* prologueCallers = m_transRecs[tid]->prologueCallers();
  assert(prologueCallers);
  return prologueCallers;
}
Exemple #2
0
void ProfData::freeFuncData(FuncId funcId) {
  // Free ProfTransRecs for Profile translations.
  for (TransID tid : funcProfTransIDs(funcId)) {
    m_transRecs[tid].reset();
  }

  // Free ProfTransRecs for Proflogue translations.
  const Func* func = Func::fromFuncId(funcId);
  for (int nArgs = 0; nArgs < func->numPrologues(); nArgs++) {
    TransID tid = prologueTransId(func, nArgs);
    if (tid != kInvalidTransID) {
      m_transRecs[tid].reset();
    }
  }
}
Exemple #3
0
PrologueCallersRec* ProfData::prologueCallers(const Func* func,
                                              int nArgs) const {
  TransID id = prologueTransId(func, nArgs);
  return prologueCallers(id);
}