Index: src/ast/ast-numbering.cc |
diff --git a/src/ast/ast-numbering.cc b/src/ast/ast-numbering.cc |
index 374970775b53a25d6ded57af7ba058d59b6f59e8..0e1a12e403edfddb57091a2d92292d16f02a8d53 100644 |
--- a/src/ast/ast-numbering.cc |
+++ b/src/ast/ast-numbering.cc |
@@ -598,12 +598,18 @@ void AstNumberingVisitor::VisitArguments(ZoneList<Expression*>* arguments) { |
void AstNumberingVisitor::VisitFunctionLiteral(FunctionLiteral* node) { |
IncrementNodeCount(); |
node->set_base_id(ReserveIdRange(FunctionLiteral::num_ids())); |
- if (eager_literals_ && node->ShouldEagerCompile()) { |
- eager_literals_->Add(new (zone()) |
- ThreadedListZoneEntry<FunctionLiteral*>(node)); |
+ if (node->ShouldEagerCompile()) { |
+ // If the function literal is being eagerly compiled, recurse into the |
+ // declarations and body of the function literal. |
+ if (!AstNumbering::Renumber(stack_limit_, zone_, node, eager_literals_)) { |
+ SetStackOverflow(); |
+ return; |
+ } |
+ if (eager_literals_) { |
+ eager_literals_->Add(new (zone()) |
+ ThreadedListZoneEntry<FunctionLiteral*>(node)); |
+ } |
} |
- // We don't recurse into the declarations or body of the function literal: |
- // you have to separately Renumber() each FunctionLiteral that you compile. |
ReserveFeedbackSlots(node); |
} |