mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 18:26:15 +00:00
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:
parent
085f166748
commit
d380864cd7
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user