| Index: src/full-codegen.cc
|
| diff --git a/src/full-codegen.cc b/src/full-codegen.cc
|
| index bad634cf3fd0e9fd02cc69eb93e5c27d7ee4d950..4d5d5dae653927509e1b567255835ad838788fed 100644
|
| --- a/src/full-codegen.cc
|
| +++ b/src/full-codegen.cc
|
| @@ -1230,13 +1230,7 @@ void FullCodeGenerator::VisitBreakStatement(BreakStatement* stmt) {
|
| }
|
|
|
|
|
| -void FullCodeGenerator::VisitReturnStatement(ReturnStatement* stmt) {
|
| - Comment cmnt(masm_, "[ ReturnStatement");
|
| - SetStatementPosition(stmt);
|
| - Expression* expr = stmt->expression();
|
| - VisitForAccumulatorValue(expr);
|
| -
|
| - // Exit all nested statements.
|
| +void FullCodeGenerator::EmitUnwindBeforeReturn() {
|
| NestedStatement* current = nesting_stack_;
|
| int stack_depth = 0;
|
| int context_length = 0;
|
| @@ -1244,7 +1238,15 @@ void FullCodeGenerator::VisitReturnStatement(ReturnStatement* stmt) {
|
| current = current->Exit(&stack_depth, &context_length);
|
| }
|
| __ Drop(stack_depth);
|
| +}
|
|
|
| +
|
| +void FullCodeGenerator::VisitReturnStatement(ReturnStatement* stmt) {
|
| + Comment cmnt(masm_, "[ ReturnStatement");
|
| + SetStatementPosition(stmt);
|
| + Expression* expr = stmt->expression();
|
| + VisitForAccumulatorValue(expr);
|
| + EmitUnwindBeforeReturn();
|
| EmitReturnSequence();
|
| }
|
|
|
|
|