mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-31 19:47:32 +09:00
Bug 1320388: Move JSFunction::HAS_REST to JSScript and LazyScript
Issue #78 [Depends on] Bug 883377: Implement ES6 function "name" property semantics
This commit is contained in:
parent
d3ffa46e36
commit
e7ee7caf1e
16 changed files with 52 additions and 37 deletions
|
|
@ -316,6 +316,7 @@ js::XDRScript(XDRState<mode>* xdr, HandleScope scriptEnclosingScope, HandleScrip
|
|||
IsLegacyGenerator,
|
||||
IsStarGenerator,
|
||||
IsAsync,
|
||||
HasRest,
|
||||
OwnSource,
|
||||
ExplicitUseStrict,
|
||||
SelfHosted,
|
||||
|
|
@ -431,6 +432,8 @@ js::XDRScript(XDRState<mode>* xdr, HandleScope scriptEnclosingScope, HandleScrip
|
|||
scriptBits |= (1 << IsStarGenerator);
|
||||
if (script->asyncKind() == AsyncFunction)
|
||||
scriptBits |= (1 << IsAsync);
|
||||
if (script->hasRest())
|
||||
scriptBits |= (1 << HasRest);
|
||||
if (script->hasSingletons())
|
||||
scriptBits |= (1 << HasSingleton);
|
||||
if (script->treatAsRunOnce())
|
||||
|
|
@ -582,6 +585,8 @@ js::XDRScript(XDRState<mode>* xdr, HandleScope scriptEnclosingScope, HandleScrip
|
|||
|
||||
if (scriptBits & (1 << IsAsync))
|
||||
script->setAsyncKind(AsyncFunction);
|
||||
if (scriptBits & (1 << HasRest))
|
||||
script->setHasRest();
|
||||
}
|
||||
|
||||
JS_STATIC_ASSERT(sizeof(jsbytecode) == 1);
|
||||
|
|
@ -2637,6 +2642,8 @@ JSScript::initFromFunctionBox(ExclusiveContext* cx, HandleScript script,
|
|||
script->isGeneratorExp_ = funbox->isGenexpLambda;
|
||||
script->setGeneratorKind(funbox->generatorKind());
|
||||
script->setAsyncKind(funbox->asyncKind());
|
||||
if (funbox->hasRest())
|
||||
script->setHasRest();
|
||||
|
||||
PositionalFormalParameterIter fi(script);
|
||||
while (fi && !fi.closedOver())
|
||||
|
|
@ -3295,6 +3302,7 @@ js::detail::CopyScript(JSContext* cx, HandleScript src, HandleScript dst,
|
|||
dst->needsHomeObject_ = src->needsHomeObject();
|
||||
dst->isDefaultClassConstructor_ = src->isDefaultClassConstructor();
|
||||
dst->isAsync_ = src->asyncKind() == AsyncFunction;
|
||||
dst->hasRest_ = src->hasRest_;
|
||||
|
||||
if (nconsts != 0) {
|
||||
GCPtrValue* vector = Rebase<GCPtrValue>(dst, src, src->consts()->vector);
|
||||
|
|
@ -4028,6 +4036,7 @@ LazyScript::Create(ExclusiveContext* cx, HandleFunction fun,
|
|||
p.shouldDeclareArguments = false;
|
||||
p.hasThisBinding = false;
|
||||
p.isAsync = false;
|
||||
p.hasRest = false;
|
||||
p.numClosedOverBindings = closedOverBindings.length();
|
||||
p.numInnerFunctions = innerFunctions.length();
|
||||
p.generatorKindBits = GeneratorKindAsBits(NotGenerator);
|
||||
|
|
@ -4169,7 +4178,7 @@ JSScript::hasLoops()
|
|||
bool
|
||||
JSScript::mayReadFrameArgsDirectly()
|
||||
{
|
||||
return argumentsHasVarBinding() || (function() && function()->hasRest());
|
||||
return argumentsHasVarBinding() || hasRest();
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue