Bug 1533003 - JSScript::fullyInitFromEmitter group flag init r=jandem

Depends on D22318

Differential Revision: https://phabricator.services.mozilla.com/D22319

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Ted Campbell 2019-03-06 18:03:12 +00:00
parent 085f166748
commit d380864cd7

View File

@ -3559,6 +3559,22 @@ bool JSScript::fullyInitFromEmitter(JSContext* cx, HandleScript script,
script->bodyScopeIndex_ = bce->bodyScopeIndex;
script->numBytecodeTypeSets_ = bce->typesetCount;
// Initialize script flags from BytecodeEmitter
script->setFlag(ImmutableFlags::Strict, bce->sc->strict());
script->setFlag(ImmutableFlags::ExplicitUseStrict,
bce->sc->hasExplicitUseStrict());
script->setFlag(ImmutableFlags::BindingsAccessedDynamically,
bce->sc->bindingsAccessedDynamically());
script->setFlag(ImmutableFlags::HasSingletons, bce->hasSingletons);
script->setFlag(ImmutableFlags::IsForEval, bce->sc->isEvalContext());
script->setFlag(ImmutableFlags::IsModule, bce->sc->isModuleContext());
script->setFlag(ImmutableFlags::HasNonSyntacticScope,
bce->outermostScope()->hasOnChain(ScopeKind::NonSyntactic));
script->setFlag(ImmutableFlags::FunHasAnyAliasedFormal,
HasAnyAliasedFormal(bce));
script->setFlag(ImmutableFlags::NeedsFunctionEnvironmentObjects,
NeedsFunctionEnvironmentObjects(bce));
if (!createPrivateScriptData(
cx, script, bce->scopeList.length(), bce->numberList.length(),
bce->objectList.length, bce->tryNoteList.length(),
@ -3603,21 +3619,6 @@ bool JSScript::fullyInitFromEmitter(JSContext* cx, HandleScript script,
bce->resumeOffsetList.finish(data->resumeOffsets());
}
script->setFlag(ImmutableFlags::Strict, bce->sc->strict());
script->setFlag(ImmutableFlags::ExplicitUseStrict,
bce->sc->hasExplicitUseStrict());
script->setFlag(ImmutableFlags::BindingsAccessedDynamically,
bce->sc->bindingsAccessedDynamically());
script->setFlag(ImmutableFlags::HasSingletons, bce->hasSingletons);
script->setFlag(ImmutableFlags::IsForEval, bce->sc->isEvalContext());
script->setFlag(ImmutableFlags::IsModule, bce->sc->isModuleContext());
script->setFlag(ImmutableFlags::HasNonSyntacticScope,
bce->outermostScope()->hasOnChain(ScopeKind::NonSyntactic));
script->setFlag(ImmutableFlags::FunHasAnyAliasedFormal,
HasAnyAliasedFormal(bce));
script->setFlag(ImmutableFlags::NeedsFunctionEnvironmentObjects,
NeedsFunctionEnvironmentObjects(bce));
// There shouldn't be any fallible operation after initFromFunctionBox,
// JSFunction::hasUncompletedScript relies on the fact that the existence
// of the pointer to JSScript means the pointed JSScript is complete.