| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/parsing/parser.h" | 5 #include "src/parsing/parser.h" | 
| 6 | 6 | 
| 7 #include "src/api.h" | 7 #include "src/api.h" | 
| 8 #include "src/ast/ast.h" | 8 #include "src/ast/ast.h" | 
| 9 #include "src/ast/ast-expression-rewriter.h" | 9 #include "src/ast/ast-expression-rewriter.h" | 
| 10 #include "src/ast/ast-expression-visitor.h" | 10 #include "src/ast/ast-expression-visitor.h" | 
| (...skipping 5767 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5778         Token::ASSIGN, input_proxy, factory->NewUndefinedLiteral(nopos), nopos); | 5778         Token::ASSIGN, input_proxy, factory->NewUndefinedLiteral(nopos), nopos); | 
| 5779     initialize_input = factory->NewExpressionStatement(assignment, nopos); | 5779     initialize_input = factory->NewExpressionStatement(assignment, nopos); | 
| 5780   } | 5780   } | 
| 5781 | 5781 | 
| 5782 | 5782 | 
| 5783   // let mode = kNext; | 5783   // let mode = kNext; | 
| 5784   Variable* var_mode = scope->NewTemporary(avfactory->empty_string()); | 5784   Variable* var_mode = scope->NewTemporary(avfactory->empty_string()); | 
| 5785   Statement* initialize_mode; | 5785   Statement* initialize_mode; | 
| 5786   { | 5786   { | 
| 5787     Expression* mode_proxy = factory->NewVariableProxy(var_mode); | 5787     Expression* mode_proxy = factory->NewVariableProxy(var_mode); | 
| 5788     Expression* knext = factory->NewSmiLiteral(JSGeneratorObject::NEXT, nopos); | 5788     Expression* knext = factory->NewSmiLiteral(JSGeneratorObject::kNext, nopos); | 
| 5789     Expression* assignment = | 5789     Expression* assignment = | 
| 5790         factory->NewAssignment(Token::ASSIGN, mode_proxy, knext, nopos); | 5790         factory->NewAssignment(Token::ASSIGN, mode_proxy, knext, nopos); | 
| 5791     initialize_mode = factory->NewExpressionStatement(assignment, nopos); | 5791     initialize_mode = factory->NewExpressionStatement(assignment, nopos); | 
| 5792   } | 5792   } | 
| 5793 | 5793 | 
| 5794 | 5794 | 
| 5795   // let output = undefined; | 5795   // let output = undefined; | 
| 5796   Variable* var_output = scope->NewTemporary(avfactory->empty_string()); | 5796   Variable* var_output = scope->NewTemporary(avfactory->empty_string()); | 
| 5797   Statement* initialize_output; | 5797   Statement* initialize_output; | 
| 5798   { | 5798   { | 
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5976     if_done = factory->NewIfStatement( | 5976     if_done = factory->NewIfStatement( | 
| 5977         property, break_loop, factory->NewEmptyStatement(nopos), nopos); | 5977         property, break_loop, factory->NewEmptyStatement(nopos), nopos); | 
| 5978   } | 5978   } | 
| 5979 | 5979 | 
| 5980 | 5980 | 
| 5981   // mode = kReturn; | 5981   // mode = kReturn; | 
| 5982   Statement* set_mode_return; | 5982   Statement* set_mode_return; | 
| 5983   { | 5983   { | 
| 5984     Expression* mode_proxy = factory->NewVariableProxy(var_mode); | 5984     Expression* mode_proxy = factory->NewVariableProxy(var_mode); | 
| 5985     Expression* kreturn = | 5985     Expression* kreturn = | 
| 5986         factory->NewSmiLiteral(JSGeneratorObject::RETURN, nopos); | 5986         factory->NewSmiLiteral(JSGeneratorObject::kReturn, nopos); | 
| 5987     Expression* assignment = | 5987     Expression* assignment = | 
| 5988         factory->NewAssignment(Token::ASSIGN, mode_proxy, kreturn, nopos); | 5988         factory->NewAssignment(Token::ASSIGN, mode_proxy, kreturn, nopos); | 
| 5989     set_mode_return = factory->NewExpressionStatement(assignment, nopos); | 5989     set_mode_return = factory->NewExpressionStatement(assignment, nopos); | 
| 5990   } | 5990   } | 
| 5991 | 5991 | 
| 5992   // Yield(output); | 5992   // Yield(output); | 
| 5993   Statement* yield_output; | 5993   Statement* yield_output; | 
| 5994   { | 5994   { | 
| 5995     Expression* output_proxy = factory->NewVariableProxy(var_output); | 5995     Expression* output_proxy = factory->NewVariableProxy(var_output); | 
| 5996     Yield* yield = factory->NewYield(generator, output_proxy, nopos); | 5996     Yield* yield = factory->NewYield(generator, output_proxy, nopos); | 
| 5997     yield_output = factory->NewExpressionStatement(yield, nopos); | 5997     yield_output = factory->NewExpressionStatement(yield, nopos); | 
| 5998   } | 5998   } | 
| 5999 | 5999 | 
| 6000 | 6000 | 
| 6001   // mode = kNext; | 6001   // mode = kNext; | 
| 6002   Statement* set_mode_next; | 6002   Statement* set_mode_next; | 
| 6003   { | 6003   { | 
| 6004     Expression* mode_proxy = factory->NewVariableProxy(var_mode); | 6004     Expression* mode_proxy = factory->NewVariableProxy(var_mode); | 
| 6005     Expression* knext = factory->NewSmiLiteral(JSGeneratorObject::NEXT, nopos); | 6005     Expression* knext = factory->NewSmiLiteral(JSGeneratorObject::kNext, nopos); | 
| 6006     Expression* assignment = | 6006     Expression* assignment = | 
| 6007         factory->NewAssignment(Token::ASSIGN, mode_proxy, knext, nopos); | 6007         factory->NewAssignment(Token::ASSIGN, mode_proxy, knext, nopos); | 
| 6008     set_mode_next = factory->NewExpressionStatement(assignment, nopos); | 6008     set_mode_next = factory->NewExpressionStatement(assignment, nopos); | 
| 6009   } | 6009   } | 
| 6010 | 6010 | 
| 6011 | 6011 | 
| 6012   // mode = kThrow; | 6012   // mode = kThrow; | 
| 6013   Statement* set_mode_throw; | 6013   Statement* set_mode_throw; | 
| 6014   { | 6014   { | 
| 6015     Expression* mode_proxy = factory->NewVariableProxy(var_mode); | 6015     Expression* mode_proxy = factory->NewVariableProxy(var_mode); | 
| 6016     Expression* kthrow = | 6016     Expression* kthrow = | 
| 6017         factory->NewSmiLiteral(JSGeneratorObject::THROW, nopos); | 6017         factory->NewSmiLiteral(JSGeneratorObject::kThrow, nopos); | 
| 6018     Expression* assignment = | 6018     Expression* assignment = | 
| 6019         factory->NewAssignment(Token::ASSIGN, mode_proxy, kthrow, nopos); | 6019         factory->NewAssignment(Token::ASSIGN, mode_proxy, kthrow, nopos); | 
| 6020     set_mode_throw = factory->NewExpressionStatement(assignment, nopos); | 6020     set_mode_throw = factory->NewExpressionStatement(assignment, nopos); | 
| 6021   } | 6021   } | 
| 6022 | 6022 | 
| 6023 | 6023 | 
| 6024   // input = function.sent; | 6024   // input = function.sent; | 
| 6025   Statement* get_input; | 6025   Statement* get_input; | 
| 6026   { | 6026   { | 
| 6027     Expression* function_sent = FunctionSentExpression(scope, factory, nopos); | 6027     Expression* function_sent = FunctionSentExpression(scope, factory, nopos); | 
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6095     case_return->Add(factory->NewBreakStatement(switch_mode, nopos), zone); | 6095     case_return->Add(factory->NewBreakStatement(switch_mode, nopos), zone); | 
| 6096 | 6096 | 
| 6097     auto case_throw = new (zone) ZoneList<Statement*>(5, zone); | 6097     auto case_throw = new (zone) ZoneList<Statement*>(5, zone); | 
| 6098     case_throw->Add(get_throw, zone); | 6098     case_throw->Add(get_throw, zone); | 
| 6099     case_throw->Add(check_throw, zone); | 6099     case_throw->Add(check_throw, zone); | 
| 6100     case_throw->Add(call_throw, zone); | 6100     case_throw->Add(call_throw, zone); | 
| 6101     case_throw->Add(validate_throw_output, zone); | 6101     case_throw->Add(validate_throw_output, zone); | 
| 6102     case_throw->Add(factory->NewBreakStatement(switch_mode, nopos), zone); | 6102     case_throw->Add(factory->NewBreakStatement(switch_mode, nopos), zone); | 
| 6103 | 6103 | 
| 6104     auto cases = new (zone) ZoneList<CaseClause*>(3, zone); | 6104     auto cases = new (zone) ZoneList<CaseClause*>(3, zone); | 
| 6105     Expression* knext = factory->NewSmiLiteral(JSGeneratorObject::NEXT, nopos); | 6105     Expression* knext = factory->NewSmiLiteral(JSGeneratorObject::kNext, nopos); | 
| 6106     Expression* kreturn = | 6106     Expression* kreturn = | 
| 6107         factory->NewSmiLiteral(JSGeneratorObject::RETURN, nopos); | 6107         factory->NewSmiLiteral(JSGeneratorObject::kReturn, nopos); | 
| 6108     Expression* kthrow = | 6108     Expression* kthrow = | 
| 6109         factory->NewSmiLiteral(JSGeneratorObject::THROW, nopos); | 6109         factory->NewSmiLiteral(JSGeneratorObject::kThrow, nopos); | 
| 6110     cases->Add(factory->NewCaseClause(knext, case_next, nopos), zone); | 6110     cases->Add(factory->NewCaseClause(knext, case_next, nopos), zone); | 
| 6111     cases->Add(factory->NewCaseClause(kreturn, case_return, nopos), zone); | 6111     cases->Add(factory->NewCaseClause(kreturn, case_return, nopos), zone); | 
| 6112     cases->Add(factory->NewCaseClause(kthrow, case_throw, nopos), zone); | 6112     cases->Add(factory->NewCaseClause(kthrow, case_throw, nopos), zone); | 
| 6113 | 6113 | 
| 6114     switch_mode->Initialize(factory->NewVariableProxy(var_mode), cases); | 6114     switch_mode->Initialize(factory->NewVariableProxy(var_mode), cases); | 
| 6115   } | 6115   } | 
| 6116 | 6116 | 
| 6117 | 6117 | 
| 6118   // while (true) { ... } | 6118   // while (true) { ... } | 
| 6119   // Already defined earlier: WhileStatement* loop = ... | 6119   // Already defined earlier: WhileStatement* loop = ... | 
| (...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 6869                         try_block, target); | 6869                         try_block, target); | 
| 6870     final_loop = target; | 6870     final_loop = target; | 
| 6871   } | 6871   } | 
| 6872 | 6872 | 
| 6873   return final_loop; | 6873   return final_loop; | 
| 6874 } | 6874 } | 
| 6875 | 6875 | 
| 6876 | 6876 | 
| 6877 }  // namespace internal | 6877 }  // namespace internal | 
| 6878 }  // namespace v8 | 6878 }  // namespace v8 | 
| OLD | NEW | 
|---|