From e8acd400ac5688e73fe9ca8819b2fbc943f252dc Mon Sep 17 00:00:00 2001 From: Jan Oravec Date: Tue, 4 Jun 2013 19:11:38 -0700 Subject: [PATCH] Remove unused UnitEmitter::m_feMap The value of m_feMap is never used. Keys are used to assert when there is an attempt to define a function with already existing name. It does this job poorly because it is not an authoritative source of existing function names. When the top-level function is defined, setCached() is called, which already checks for duplicates, so let's rely on it. --- hphp/compiler/analysis/emitter.cpp | 6 +++--- hphp/runtime/vm/as.cpp | 2 +- hphp/runtime/vm/func.cpp | 2 +- hphp/runtime/vm/unit.cpp | 10 ++-------- hphp/runtime/vm/unit.h | 5 +---- 5 files changed, 8 insertions(+), 17 deletions(-) diff --git a/hphp/compiler/analysis/emitter.cpp b/hphp/compiler/analysis/emitter.cpp index 6803c6823..09992aaa5 100644 --- a/hphp/compiler/analysis/emitter.cpp +++ b/hphp/compiler/analysis/emitter.cpp @@ -2586,7 +2586,7 @@ bool EmitterVisitor::visitImpl(ConstructPtr node) { postponeMeth(m, nullptr, true); } else { assert(!node->getClassScope()); // Handled directly by emitClass(). - FuncEmitter* fe = m_ue.newFuncEmitter(nName, false); + FuncEmitter* fe = m_ue.newFuncEmitter(nName); e.DefFunc(fe->id()); postponeMeth(m, fe, false); } @@ -7023,7 +7023,7 @@ static Unit* emitHHBCNativeFuncUnit(const HhbcExtFuncInfo* builtinFuncs, is not callable. */ StringData* name = StringData::GetStaticString("86null"); - FuncEmitter* fe = ue->newFuncEmitter(name, /*top*/ true); + FuncEmitter* fe = ue->newFuncEmitter(name); fe->init(0, 0, ue->bcPos(), AttrUnique | AttrPersistent, true, empty_string.get()); ue->emitOp(OpNull); @@ -7045,7 +7045,7 @@ static Unit* emitHHBCNativeFuncUnit(const HhbcExtFuncInfo* builtinFuncs, // version to delegate if necessary name = StringData::GetStaticString("__builtin_" + name->toCPPString()); } - FuncEmitter* fe = ue->newFuncEmitter(name, /*top*/ true); + FuncEmitter* fe = ue->newFuncEmitter(name); Offset base = ue->bcPos(); fe->setBuiltinFunc(mi, bif, nif, base); ue->emitOp(OpNativeImpl); diff --git a/hphp/runtime/vm/as.cpp b/hphp/runtime/vm/as.cpp index 5cc1c1924..a05a37708 100644 --- a/hphp/runtime/vm/as.cpp +++ b/hphp/runtime/vm/as.cpp @@ -1438,7 +1438,7 @@ void parse_function(AsmState& as) { as.error(".function must have a name"); } - as.fe = as.ue->newFuncEmitter(StringData::GetStaticString(name), true); + as.fe = as.ue->newFuncEmitter(StringData::GetStaticString(name)); as.fe->init(as.in.getLineNumber(), as.in.getLineNumber() + 1 /* XXX */, as.ue->bcPos(), attrs, true, 0); diff --git a/hphp/runtime/vm/func.cpp b/hphp/runtime/vm/func.cpp index 8f3cd07d2..b90bd297f 100644 --- a/hphp/runtime/vm/func.cpp +++ b/hphp/runtime/vm/func.cpp @@ -1141,7 +1141,7 @@ void FuncRepoProxy::GetFuncsStmt FuncEmitter* fe; if (preClassId < 0) { - fe = ue.newFuncEmitter(name, top); + fe = ue.newFuncEmitter(name); } else { PreClassEmitter* pce = ue.pce(preClassId); fe = ue.newMethodEmitter(name, pce); diff --git a/hphp/runtime/vm/unit.cpp b/hphp/runtime/vm/unit.cpp index 385a89a9f..a04b3068a 100644 --- a/hphp/runtime/vm/unit.cpp +++ b/hphp/runtime/vm/unit.cpp @@ -2301,21 +2301,15 @@ FuncEmitter* UnitEmitter::getMain() { void UnitEmitter::initMain(int line1, int line2) { assert(m_fes.size() == 0); StringData* name = StringData::GetStaticString(""); - FuncEmitter* pseudomain = newFuncEmitter(name, false); + FuncEmitter* pseudomain = newFuncEmitter(name); Attr attrs = AttrMayUseVV; pseudomain->init(line1, line2, 0, attrs, false, name); } -FuncEmitter* UnitEmitter::newFuncEmitter(const StringData* n, bool top) { +FuncEmitter* UnitEmitter::newFuncEmitter(const StringData* n) { assert(m_fes.size() > 0 || !strcmp(n->data(), "")); // Pseudomain comes first. FuncEmitter* fe = new FuncEmitter(*this, m_nextFuncSn++, m_fes.size(), n); m_fes.push_back(fe); - if (top) { - if (m_feMap.find(n) != m_feMap.end()) { - raise_error("Function already defined: %s", n->data()); - } - m_feMap[n] = fe; - } return fe; } diff --git a/hphp/runtime/vm/unit.h b/hphp/runtime/vm/unit.h index f9cfac1e5..2c831abb1 100644 --- a/hphp/runtime/vm/unit.h +++ b/hphp/runtime/vm/unit.h @@ -718,7 +718,7 @@ class UnitEmitter { Id mergeArray(ArrayData* a, const StringData* key=nullptr); FuncEmitter* getMain(); void initMain(int line1, int line2); - FuncEmitter* newFuncEmitter(const StringData* n, bool top); + FuncEmitter* newFuncEmitter(const StringData* n); void appendTopEmitter(FuncEmitter* func); FuncEmitter* newMethodEmitter(const StringData* n, PreClassEmitter* pce); PreClassEmitter* newPreClassEmitter(const StringData* n, @@ -829,9 +829,6 @@ class UnitEmitter { bool m_mergeOnly; typedef std::vector FeVec; FeVec m_fes; - typedef hphp_hash_map FuncEmitterMap; - FuncEmitterMap m_feMap; typedef hphp_hash_map > FMap; FMap m_fMap;