mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 04:05:32 +00:00
Bug 1319416 - Convert Parser::{cond,or}Expr1 to plain old Parser::{cond,or}Expr. r=arai
--HG-- extra : rebase_source : 57e5cbc300a1ee6e36d27169e90fc239954e11d7
This commit is contained in:
parent
0f07840ce6
commit
5a8c6c51c8
@ -8041,7 +8041,7 @@ Precedence(ParseNodeKind pnk) {
|
|||||||
|
|
||||||
template <class ParseHandler, typename CharT>
|
template <class ParseHandler, typename CharT>
|
||||||
MOZ_ALWAYS_INLINE typename ParseHandler::Node
|
MOZ_ALWAYS_INLINE typename ParseHandler::Node
|
||||||
Parser<ParseHandler, CharT>::orExpr1(InHandling inHandling, YieldHandling yieldHandling,
|
Parser<ParseHandler, CharT>::orExpr(InHandling inHandling, YieldHandling yieldHandling,
|
||||||
TripledotHandling tripledotHandling,
|
TripledotHandling tripledotHandling,
|
||||||
PossibleError* possibleError,
|
PossibleError* possibleError,
|
||||||
InvokedPrediction invoked /* = PredictUninvoked */)
|
InvokedPrediction invoked /* = PredictUninvoked */)
|
||||||
@ -8058,7 +8058,7 @@ Parser<ParseHandler, CharT>::orExpr1(InHandling inHandling, YieldHandling yieldH
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
pn = unaryExpr(yieldHandling, tripledotHandling, possibleError, invoked);
|
pn = unaryExpr(yieldHandling, tripledotHandling, possibleError, invoked);
|
||||||
if (!pn)
|
if (!pn)
|
||||||
return pn;
|
return null();
|
||||||
|
|
||||||
// If a binary operator follows, consume it and compute the
|
// If a binary operator follows, consume it and compute the
|
||||||
// corresponding operator.
|
// corresponding operator.
|
||||||
@ -8098,7 +8098,7 @@ Parser<ParseHandler, CharT>::orExpr1(InHandling inHandling, YieldHandling yieldH
|
|||||||
ParseNodeKind combiningPnk = kindStack[depth];
|
ParseNodeKind combiningPnk = kindStack[depth];
|
||||||
pn = handler.appendOrCreateList(combiningPnk, nodeStack[depth], pn, pc);
|
pn = handler.appendOrCreateList(combiningPnk, nodeStack[depth], pn, pc);
|
||||||
if (!pn)
|
if (!pn)
|
||||||
return pn;
|
return null();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pnk == PNK_LIMIT)
|
if (pnk == PNK_LIMIT)
|
||||||
@ -8110,20 +8110,27 @@ Parser<ParseHandler, CharT>::orExpr1(InHandling inHandling, YieldHandling yieldH
|
|||||||
MOZ_ASSERT(depth <= PRECEDENCE_CLASSES);
|
MOZ_ASSERT(depth <= PRECEDENCE_CLASSES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tokenStream.ungetToken();
|
||||||
|
|
||||||
MOZ_ASSERT(depth == 0);
|
MOZ_ASSERT(depth == 0);
|
||||||
return pn;
|
return pn;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class ParseHandler, typename CharT>
|
template <class ParseHandler, typename CharT>
|
||||||
MOZ_ALWAYS_INLINE typename ParseHandler::Node
|
MOZ_ALWAYS_INLINE typename ParseHandler::Node
|
||||||
Parser<ParseHandler, CharT>::condExpr1(InHandling inHandling, YieldHandling yieldHandling,
|
Parser<ParseHandler, CharT>::condExpr(InHandling inHandling, YieldHandling yieldHandling,
|
||||||
TripledotHandling tripledotHandling,
|
TripledotHandling tripledotHandling,
|
||||||
PossibleError* possibleError,
|
PossibleError* possibleError,
|
||||||
InvokedPrediction invoked /* = PredictUninvoked */)
|
InvokedPrediction invoked /* = PredictUninvoked */)
|
||||||
{
|
{
|
||||||
Node condition = orExpr1(inHandling, yieldHandling, tripledotHandling, possibleError, invoked);
|
Node condition = orExpr(inHandling, yieldHandling, tripledotHandling, possibleError, invoked);
|
||||||
|
if (!condition)
|
||||||
|
return null();
|
||||||
|
|
||||||
if (!condition || !tokenStream.isCurrentTokenType(TOK_HOOK))
|
bool matched;
|
||||||
|
if (!tokenStream.matchToken(&matched, TOK_HOOK))
|
||||||
|
return null();
|
||||||
|
if (!matched)
|
||||||
return condition;
|
return condition;
|
||||||
|
|
||||||
Node thenExpr = assignExpr(InAllowed, yieldHandling, TripledotProhibited);
|
Node thenExpr = assignExpr(InAllowed, yieldHandling, TripledotProhibited);
|
||||||
@ -8136,10 +8143,6 @@ Parser<ParseHandler, CharT>::condExpr1(InHandling inHandling, YieldHandling yiel
|
|||||||
if (!elseExpr)
|
if (!elseExpr)
|
||||||
return null();
|
return null();
|
||||||
|
|
||||||
// Advance to the next token; the caller is responsible for interpreting it.
|
|
||||||
TokenKind ignored;
|
|
||||||
if (!tokenStream.getToken(&ignored))
|
|
||||||
return null();
|
|
||||||
return handler.newConditional(condition, thenExpr, elseExpr);
|
return handler.newConditional(condition, thenExpr, elseExpr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8161,7 +8164,7 @@ Parser<ParseHandler, CharT>::assignExpr(InHandling inHandling, YieldHandling yie
|
|||||||
// numeric arrays, such as some Kraken benchmarks, it happens more often.)
|
// numeric arrays, such as some Kraken benchmarks, it happens more often.)
|
||||||
//
|
//
|
||||||
// In such cases, we can avoid the full expression parsing route through
|
// In such cases, we can avoid the full expression parsing route through
|
||||||
// assignExpr(), condExpr1(), orExpr1(), unaryExpr(), memberExpr(), and
|
// assignExpr(), condExpr(), orExpr(), unaryExpr(), memberExpr(), and
|
||||||
// primaryExpr().
|
// primaryExpr().
|
||||||
|
|
||||||
TokenKind tt;
|
TokenKind tt;
|
||||||
@ -8244,14 +8247,16 @@ Parser<ParseHandler, CharT>::assignExpr(InHandling inHandling, YieldHandling yie
|
|||||||
return null();
|
return null();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
lhs = condExpr1(inHandling, yieldHandling, tripledotHandling, &possibleErrorInner, invoked);
|
lhs = condExpr(inHandling, yieldHandling, tripledotHandling, &possibleErrorInner, invoked);
|
||||||
if (!lhs) {
|
if (!lhs)
|
||||||
|
return null();
|
||||||
|
|
||||||
|
if (!tokenStream.getToken(&tt))
|
||||||
return null();
|
return null();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ParseNodeKind kind;
|
ParseNodeKind kind;
|
||||||
switch (tokenStream.currentToken().type) {
|
switch (tt) {
|
||||||
case TOK_ASSIGN: kind = PNK_ASSIGN; break;
|
case TOK_ASSIGN: kind = PNK_ASSIGN; break;
|
||||||
case TOK_ADDASSIGN: kind = PNK_ADDASSIGN; break;
|
case TOK_ADDASSIGN: kind = PNK_ADDASSIGN; break;
|
||||||
case TOK_SUBASSIGN: kind = PNK_SUBASSIGN; break;
|
case TOK_SUBASSIGN: kind = PNK_SUBASSIGN; break;
|
||||||
|
@ -737,11 +737,11 @@ class Parser final : public ParserBase, private JS::AutoGCRooter
|
|||||||
InvokedPrediction invoked = PredictUninvoked);
|
InvokedPrediction invoked = PredictUninvoked);
|
||||||
Node assignExprWithoutYieldOrAwait(YieldHandling yieldHandling);
|
Node assignExprWithoutYieldOrAwait(YieldHandling yieldHandling);
|
||||||
Node yieldExpression(InHandling inHandling);
|
Node yieldExpression(InHandling inHandling);
|
||||||
Node condExpr1(InHandling inHandling, YieldHandling yieldHandling,
|
Node condExpr(InHandling inHandling, YieldHandling yieldHandling,
|
||||||
TripledotHandling tripledotHandling,
|
TripledotHandling tripledotHandling,
|
||||||
PossibleError* possibleError,
|
PossibleError* possibleError,
|
||||||
InvokedPrediction invoked = PredictUninvoked);
|
InvokedPrediction invoked = PredictUninvoked);
|
||||||
Node orExpr1(InHandling inHandling, YieldHandling yieldHandling,
|
Node orExpr(InHandling inHandling, YieldHandling yieldHandling,
|
||||||
TripledotHandling tripledotHandling,
|
TripledotHandling tripledotHandling,
|
||||||
PossibleError* possibleError,
|
PossibleError* possibleError,
|
||||||
InvokedPrediction invoked = PredictUninvoked);
|
InvokedPrediction invoked = PredictUninvoked);
|
||||||
|
Loading…
Reference in New Issue
Block a user