mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 23:35:34 +00:00
Bug 1505784 part 1 - Copy immutableFlags_ word in CopyScript instead of copying each flag separately. r=tcampbell
Note: the old code didn't copy the HasNoScriptRval and SelfHosted flags, because they are set to the correct values in CreateEmptyScriptForClone. That means it's fine to copy them as part of the flags word. The only change in behavior is that we now copy the IsLikelyConstructorWrapper flag as well. Differential Revision: https://phabricator.services.mozilla.com/D11325 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
815d536b18
commit
5b18ee9719
@ -4119,31 +4119,17 @@ js::detail::CopyScript(JSContext* cx, HandleScript src, HandleScript dst,
|
||||
dst->bodyScopeIndex_ = src->bodyScopeIndex_;
|
||||
dst->funLength_ = src->funLength();
|
||||
dst->nTypeSets_ = src->nTypeSets();
|
||||
|
||||
dst->immutableFlags_ = src->immutableFlags_;
|
||||
dst->setFlag(ImmutableFlags::HasNonSyntacticScope,
|
||||
scopes[0]->hasOnChain(ScopeKind::NonSyntactic));
|
||||
|
||||
if (src->argumentsHasVarBinding()) {
|
||||
dst->setArgumentsHasVarBinding();
|
||||
if (src->analyzedArgsUsage()) {
|
||||
dst->setNeedsArgsObj(src->needsArgsObj());
|
||||
}
|
||||
}
|
||||
dst->setFlag(ImmutableFlags::HasMappedArgsObj, src->hasMappedArgsObj());
|
||||
dst->setFlag(ImmutableFlags::FunctionHasThisBinding, src->functionHasThisBinding());
|
||||
dst->setFlag(ImmutableFlags::FunctionHasExtraBodyVarScope, src->functionHasExtraBodyVarScope());
|
||||
dst->setFlag(ImmutableFlags::Strict, src->strict());
|
||||
dst->setFlag(ImmutableFlags::ExplicitUseStrict, src->explicitUseStrict());
|
||||
dst->setFlag(ImmutableFlags::HasNonSyntacticScope, scopes[0]->hasOnChain(ScopeKind::NonSyntactic));
|
||||
dst->setFlag(ImmutableFlags::BindingsAccessedDynamically, src->bindingsAccessedDynamically());
|
||||
dst->setFlag(ImmutableFlags::FunHasExtensibleScope, src->funHasExtensibleScope());
|
||||
dst->setFlag(ImmutableFlags::FunHasAnyAliasedFormal, src->funHasAnyAliasedFormal());
|
||||
dst->setFlag(ImmutableFlags::HasSingletons, src->hasSingletons());
|
||||
dst->setFlag(ImmutableFlags::TreatAsRunOnce, src->treatAsRunOnce());
|
||||
dst->setFlag(ImmutableFlags::HasInnerFunctions, src->hasInnerFunctions());
|
||||
dst->setFlag(ImmutableFlags::IsGenerator, src->isGenerator());
|
||||
dst->setFlag(ImmutableFlags::IsDerivedClassConstructor, src->isDerivedClassConstructor());
|
||||
dst->setFlag(ImmutableFlags::NeedsHomeObject, src->needsHomeObject());
|
||||
dst->setFlag(ImmutableFlags::IsDefaultClassConstructor, src->isDefaultClassConstructor());
|
||||
dst->setFlag(ImmutableFlags::IsAsync, src->isAsync());
|
||||
dst->setFlag(ImmutableFlags::HasRest, src->hasRest());
|
||||
dst->setFlag(ImmutableFlags::HideScriptFromDebugger, src->hideScriptFromDebugger());
|
||||
|
||||
{
|
||||
auto array = dst->data_->scopes();
|
||||
|
Loading…
Reference in New Issue
Block a user