Part 2: Call NameFunctions after emitting

Issue #78
This commit is contained in:
janekptacijarabaci 2018-03-19 15:51:02 +01:00 committed by Roy Tam
commit 34fe54e4e8
2 changed files with 15 additions and 14 deletions

View file

@ -336,10 +336,10 @@ BytecodeCompiler::compileScript(HandleObject environment, SharedContext* sc)
if (!deoptimizeArgumentsInEnclosingScripts(cx->asJSContext(), environment))
return nullptr;
}
if (!NameFunctions(cx, pn))
return nullptr;
if (!emitter->emitScript(pn))
return nullptr;
if (!NameFunctions(cx, pn))
return nullptr;
parser->handler.freeTree(pn);
break;
@ -397,15 +397,15 @@ BytecodeCompiler::compileModule()
if (!pn)
return nullptr;
if (!NameFunctions(cx, pn))
return nullptr;
Maybe<BytecodeEmitter> emitter;
if (!emplaceEmitter(emitter, &modulesc))
return nullptr;
if (!emitter->emitScript(pn->pn_body))
return nullptr;
if (!NameFunctions(cx, pn))
return nullptr;
parser->handler.freeTree(pn);
if (!builder.initModule())
@ -453,9 +453,6 @@ BytecodeCompiler::compileStandaloneFunction(MutableHandleFunction fun,
return false;
} while (!fn);
if (!NameFunctions(cx, fn))
return false;
if (fn->pn_funbox->function()->isInterpreted()) {
MOZ_ASSERT(fun == fn->pn_funbox->function());
@ -472,6 +469,9 @@ BytecodeCompiler::compileStandaloneFunction(MutableHandleFunction fun,
MOZ_ASSERT(IsAsmJSModule(fun));
}
if (!NameFunctions(cx, fn))
return false;
if (!maybeCompleteCompressSource())
return false;
@ -646,9 +646,6 @@ frontend::CompileLazyFunction(JSContext* cx, Handle<LazyScript*> lazy, const cha
if (!pn)
return false;
if (!NameFunctions(cx, pn))
return false;
RootedScriptSource sourceObject(cx, lazy->sourceObject());
MOZ_ASSERT(sourceObject);
@ -667,7 +664,13 @@ frontend::CompileLazyFunction(JSContext* cx, Handle<LazyScript*> lazy, const cha
if (!bce.init())
return false;
return bce.emitFunctionScript(pn->pn_body);
if (!bce.emitFunctionScript(pn->pn_body))
return false;
if (!NameFunctions(cx, pn))
return false;
return true;
}
bool

View file

@ -4539,8 +4539,6 @@ BytecodeEmitter::setOrEmitSetFunName(ParseNode* maybeFun, HandleAtom name,
RootedAtom funName(cx, NameToFunctionName(cx, name, prefixKind));
if (!funName)
return false;
if (fun->hasGuessedAtom())
fun->clearGuessedAtom();
fun->setCompileTimeName(name);
return true;
}