16 source_range_map_(source_range_map) {}
19 AstTraversalVisitor::VisitBlock(stmt);
22 if (enclosingSourceRanges !=
nullptr) {
29 AstTraversalVisitor::VisitSwitchStatement(stmt);
37 AstTraversalVisitor::VisitFunctionLiteral(expr);
43 AstTraversalVisitor::VisitTryCatchStatement(stmt);
50 AstTraversalVisitor::VisitTryFinallyStatement(stmt);
57 if (range ==
nullptr)
return true;
66 range->RemoveContinuationRange();
78 if (last_statement->IsExpressionStatement() &&
79 last_statement->AsExpressionStatement()->expression()->IsThrow()) {
83 last_statement->AsExpressionStatement()->expression());
88 if (last_range ==
nullptr)
return;
103 for (
int i = statements->
length() - 1;
i >= 0; --
i) {
105 if (stmt->IsReturnStatement() &&
106 stmt->AsReturnStatement()->is_synthetic_async_return()) {
124 if (last_non_synthetic) {
virtual bool HasRange(SourceRangeKind kind)=0
virtual void RemoveContinuationRange()
ZonePtrList< Statement > * statements()
ZonePtrList< Statement > * body()
void VisitTryFinallyStatement(TryFinallyStatement *stmt)
std::unordered_set< int > continuation_positions_
void VisitSwitchStatement(SwitchStatement *stmt)
void MaybeRemoveLastContinuationRange(ZonePtrList< Statement > *stmts)
bool VisitNode(AstNode *node)
void VisitBlock(Block *stmt)
void VisitFunctionLiteral(FunctionLiteral *expr)
void VisitTryCatchStatement(TryCatchStatement *stmt)
SourceRangeMap * source_range_map_
SourceRangeAstVisitor(uintptr_t stack_limit, Expression *root, SourceRangeMap *source_range_map)
void MaybeRemoveContinuationRangeOfAsyncReturn(TryCatchStatement *stmt)
void MaybeRemoveContinuationRange(Statement *last_statement)
AstNodeSourceRanges * Find(ZoneObject *node)
ZonePtrList< CaseClause > * cases()
bool is_try_catch_for_async()
Block * try_block() const
V8_INLINE int length() const
V8_INLINE bool is_empty() const
MovableLabel continuation