Beispiel #1
0
Func::~Func() {
  if (m_fullName != NULL && s_interceptsEnabled && m_maybeIntercepted != -1) {
    unregister_intercept_flag(fullNameRef(), &m_maybeIntercepted);
  }
#ifdef DEBUG
  validate();
  m_magic = ~m_magic;
#endif
}
Beispiel #2
0
Func::~Func() {
  if (m_fullName != nullptr && m_maybeIntercepted != -1) {
    unregister_intercept_flag(fullNameRef(), &m_maybeIntercepted);
  }
  if (m_funcId != InvalidFuncId) {
    DEBUG_ONLY auto oldVal = s_funcVec.exchange(m_funcId, nullptr);
    assert(oldVal == this);
  }
  int maxNumPrologues = getMaxNumPrologues(numParams());
  int numPrologues =
    maxNumPrologues > kNumFixedPrologues ? maxNumPrologues
                                         : kNumFixedPrologues;
  TranslatorX64::Get()->smashPrologueGuards((TCA *)m_prologueTable,
                                            numPrologues, this);
#ifdef DEBUG
  validate();
  m_magic = ~m_magic;
#endif
}