Bug 888469 - rm funName argument (r=bhackett)

This commit is contained in:
Luke Wagner 2013-06-25 00:20:51 -07:00
parent 4b380c183f
commit 108ee626e1
2 changed files with 23 additions and 34 deletions

View File

@ -824,7 +824,7 @@ Parser<ParseHandler>::checkStrictAssignment(Node lhs, AssignmentFlavor flavor)
*/
template <typename ParseHandler>
bool
Parser<ParseHandler>::checkStrictBinding(HandlePropertyName name, Node pn)
Parser<ParseHandler>::checkStrictBinding(PropertyName *name, Node pn)
{
if (!pc->sc->needStrictChecks())
return true;
@ -1305,8 +1305,7 @@ ConvertDefinitionToNamedLambdaUse(TokenStream &ts, ParseContext<FullParseHandler
*/
template <>
bool
Parser<FullParseHandler>::leaveFunction(ParseNode *fn, HandlePropertyName funName,
ParseContext<FullParseHandler> *outerpc,
Parser<FullParseHandler>::leaveFunction(ParseNode *fn, ParseContext<FullParseHandler> *outerpc,
FunctionSyntaxKind kind)
{
outerpc->blockidGen = pc->blockidGen;
@ -1321,7 +1320,7 @@ Parser<FullParseHandler>::leaveFunction(ParseNode *fn, HandlePropertyName funNam
Definition *dn = r.front().value().get<FullParseHandler>();
JS_ASSERT(dn->isPlaceholder());
if (atom == funName && kind == Expression) {
if (atom == funbox->function()->name() && kind == Expression) {
if (!ConvertDefinitionToNamedLambdaUse(tokenStream, pc, funbox, dn))
return false;
continue;
@ -1405,8 +1404,7 @@ Parser<FullParseHandler>::leaveFunction(ParseNode *fn, HandlePropertyName funNam
template <>
bool
Parser<SyntaxParseHandler>::leaveFunction(Node fn, HandlePropertyName funName,
ParseContext<SyntaxParseHandler> *outerpc,
Parser<SyntaxParseHandler>::leaveFunction(Node fn, ParseContext<SyntaxParseHandler> *outerpc,
FunctionSyntaxKind kind)
{
outerpc->blockidGen = pc->blockidGen;
@ -1940,7 +1938,7 @@ Parser<ParseHandler>::functionDef(HandlePropertyName funName, const TokenStream:
// directive, we backup and reparse it as strict.
bool initiallyStrict = pc->sc->strict;
bool becameStrict;
if (!functionArgsAndBody(pn, fun, funName, startOffset, type, kind, initiallyStrict,
if (!functionArgsAndBody(pn, fun, startOffset, type, kind, initiallyStrict,
&becameStrict))
{
if (initiallyStrict || !becameStrict || tokenStream.hadError())
@ -1954,7 +1952,7 @@ Parser<ParseHandler>::functionDef(HandlePropertyName funName, const TokenStream:
// functionArgsAndBody may have already set pn->pn_body before failing.
handler.setFunctionBody(pn, null());
if (!functionArgsAndBody(pn, fun, funName, startOffset, type, kind, true))
if (!functionArgsAndBody(pn, fun, startOffset, type, kind, true))
return null();
}
@ -2055,7 +2053,6 @@ Parser<SyntaxParseHandler>::finishFunctionDefinition(Node pn, FunctionBox *funbo
template <>
bool
Parser<FullParseHandler>::functionArgsAndBody(ParseNode *pn, HandleFunction fun,
HandlePropertyName funName,
size_t startOffset, FunctionType type,
FunctionSyntaxKind kind,
bool strict, bool *becameStrict)
@ -2087,7 +2084,7 @@ Parser<FullParseHandler>::functionArgsAndBody(ParseNode *pn, HandleFunction fun,
return false;
if (!parser->functionArgsAndBodyGeneric(SyntaxParseHandler::NodeGeneric,
fun, funName, type, kind, becameStrict))
fun, type, kind, becameStrict))
{
if (parser->hadAbortedSyntaxParse()) {
// Try again with a full parse.
@ -2120,10 +2117,10 @@ Parser<FullParseHandler>::functionArgsAndBody(ParseNode *pn, HandleFunction fun,
if (!funpc.init())
return false;
if (!functionArgsAndBodyGeneric(pn, fun, funName, type, kind, becameStrict))
if (!functionArgsAndBodyGeneric(pn, fun, type, kind, becameStrict))
return false;
if (!leaveFunction(pn, funName, outerpc, kind))
if (!leaveFunction(pn, outerpc, kind))
return false;
pn->pn_blockid = outerpc->blockid();
@ -2140,10 +2137,8 @@ Parser<FullParseHandler>::functionArgsAndBody(ParseNode *pn, HandleFunction fun,
template <>
bool
Parser<SyntaxParseHandler>::functionArgsAndBody(Node pn, HandleFunction fun,
HandlePropertyName funName,
size_t startOffset, FunctionType type,
FunctionSyntaxKind kind,
Parser<SyntaxParseHandler>::functionArgsAndBody(Node pn, HandleFunction fun, size_t startOffset,
FunctionType type, FunctionSyntaxKind kind,
bool strict, bool *becameStrict)
{
if (becameStrict)
@ -2161,10 +2156,10 @@ Parser<SyntaxParseHandler>::functionArgsAndBody(Node pn, HandleFunction fun,
if (!funpc.init())
return false;
if (!functionArgsAndBodyGeneric(pn, fun, funName, type, kind, becameStrict))
if (!functionArgsAndBodyGeneric(pn, fun, type, kind, becameStrict))
return false;
if (!leaveFunction(pn, funName, outerpc, kind))
if (!leaveFunction(pn, outerpc, kind))
return false;
// This is a lazy function inner to another lazy function. Remember the
@ -2192,13 +2187,11 @@ Parser<FullParseHandler>::standaloneLazyFunction(HandleFunction fun, unsigned st
if (!funpc.init())
return null();
RootedPropertyName funName(context, fun->atom() ? fun->atom()->asPropertyName() : NULL);
if (!functionArgsAndBodyGeneric(pn, fun, funName, Normal, Statement, NULL))
if (!functionArgsAndBodyGeneric(pn, fun, Normal, Statement, NULL))
return null();
if (fun->isNamedLambda()) {
if (AtomDefnPtr p = pc->lexdeps->lookup(funName)) {
if (AtomDefnPtr p = pc->lexdeps->lookup(fun->name())) {
Definition *dn = p.value().get<FullParseHandler>();
if (!ConvertDefinitionToNamedLambdaUse(tokenStream, pc, funbox, dn))
return NULL;
@ -2215,8 +2208,7 @@ Parser<FullParseHandler>::standaloneLazyFunction(HandleFunction fun, unsigned st
template <typename ParseHandler>
bool
Parser<ParseHandler>::functionArgsAndBodyGeneric(Node pn, HandleFunction fun,
HandlePropertyName funName, FunctionType type,
Parser<ParseHandler>::functionArgsAndBodyGeneric(Node pn, HandleFunction fun, FunctionType type,
FunctionSyntaxKind kind, bool *becameStrict)
{
// Given a properly initialized parse context, try to parse an actual
@ -2273,7 +2265,7 @@ Parser<ParseHandler>::functionArgsAndBodyGeneric(Node pn, HandleFunction fun,
if (!yieldGuard.empty() && !yieldGuard.ref().checkValidBody(body, JSMSG_YIELD_IN_ARROW))
return false;
if (funName && !checkStrictBinding(funName, pn))
if (fun->name() && !checkStrictBinding(fun->name(), pn))
return false;
#if JS_HAS_EXPR_CLOSURES
@ -6026,8 +6018,7 @@ Parser<FullParseHandler>::generatorExpr(ParseNode *kid)
genfn->pn_pos.begin = body->pn_pos.begin = kid->pn_pos.begin;
genfn->pn_pos.end = body->pn_pos.end = pos().end;
RootedPropertyName funName(context);
if (!leaveFunction(genfn, funName, outerpc))
if (!leaveFunction(genfn, outerpc))
return null();
}

View File

@ -415,8 +415,7 @@ class Parser : private AutoGCRooter, public StrictModeGetter
enum FunctionBodyType { StatementListBody, ExpressionBody };
Node functionBody(FunctionSyntaxKind kind, FunctionBodyType type);
bool functionArgsAndBodyGeneric(Node pn, HandleFunction fun,
HandlePropertyName funName, FunctionType type,
bool functionArgsAndBodyGeneric(Node pn, HandleFunction fun, FunctionType type,
FunctionSyntaxKind kind, bool *becameStrict);
virtual bool strictMode() { return pc->sc->strict; }
@ -486,8 +485,8 @@ class Parser : private AutoGCRooter, public StrictModeGetter
Node functionDef(HandlePropertyName name, const TokenStream::Position &start,
size_t startOffset, FunctionType type, FunctionSyntaxKind kind);
bool functionArgsAndBody(Node pn, HandleFunction fun, HandlePropertyName funName,
size_t startOffset, FunctionType type, FunctionSyntaxKind kind,
bool functionArgsAndBody(Node pn, HandleFunction fun, size_t startOffset,
FunctionType type, FunctionSyntaxKind kind,
bool strict, bool *becameStrict = NULL);
Node unaryOpExpr(ParseNodeKind kind, JSOp op, uint32_t begin);
@ -533,7 +532,7 @@ class Parser : private AutoGCRooter, public StrictModeGetter
bool forDecl, bool forEach, bool forOf);
bool checkAndMarkAsIncOperand(Node kid, TokenKind tt, bool preorder);
bool checkStrictAssignment(Node lhs, AssignmentFlavor flavor);
bool checkStrictBinding(HandlePropertyName name, Node pn);
bool checkStrictBinding(PropertyName *name, Node pn);
bool defineArg(Node funcpn, HandlePropertyName name,
bool disallowDuplicateArgs = false, Node *duplicatedArg = NULL);
Node pushLexicalScope(StmtInfoPC *stmt);
@ -572,8 +571,7 @@ class Parser : private AutoGCRooter, public StrictModeGetter
bool checkFinalReturn(Node pn);
DefinitionNode getOrCreateLexicalDependency(ParseContext<ParseHandler> *pc, JSAtom *atom);
bool leaveFunction(Node fn, HandlePropertyName funName,
ParseContext<ParseHandler> *outerpc,
bool leaveFunction(Node fn, ParseContext<ParseHandler> *outerpc,
FunctionSyntaxKind kind = Expression);
TokenPos pos() const { return tokenStream.currentToken().pos; }