Func* Func::clone() const { Func* f = new (allocFuncMem( m_name, m_numParams, isClosureBody() || isGeneratorFromClosure() )) Func(*this); f->initPrologues(m_numParams, isGenerator()); f->m_funcId = InvalidFuncId; return f; }
Func* Func::clone(Class* cls, const StringData* name) const { auto numParams = this->numParams(); Func* f = new (allocFuncMem( m_name, numParams, isClosureBody(), cls || !preClass())) Func(*this); f->initPrologues(numParams); f->m_funcId = InvalidFuncId; if (name) { f->m_name = name; } if (cls != f->m_cls) { f->m_cls = cls; } f->setFullName(numParams); f->m_profCounter = 0; return f; }
Func* Func::clone() const { Func* f = new (allocFuncMem(m_name, m_numParams)) Func(*this); f->initPrologues(m_numParams); f->m_funcId = InvalidId; return f; }