| 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 #ifndef V8_AST_H_ | 5 #ifndef V8_AST_H_ |
| 6 #define V8_AST_H_ | 6 #define V8_AST_H_ |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/assembler.h" | 10 #include "src/assembler.h" |
| (...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 }; | 954 }; |
| 955 | 955 |
| 956 | 956 |
| 957 class ForOfStatement V8_FINAL : public ForEachStatement { | 957 class ForOfStatement V8_FINAL : public ForEachStatement { |
| 958 public: | 958 public: |
| 959 DECLARE_NODE_TYPE(ForOfStatement) | 959 DECLARE_NODE_TYPE(ForOfStatement) |
| 960 | 960 |
| 961 void Initialize(Expression* each, | 961 void Initialize(Expression* each, |
| 962 Expression* subject, | 962 Expression* subject, |
| 963 Statement* body, | 963 Statement* body, |
| 964 Expression* assign_iterable, | |
| 965 Expression* assign_iterator, | 964 Expression* assign_iterator, |
| 966 Expression* next_result, | 965 Expression* next_result, |
| 967 Expression* result_done, | 966 Expression* result_done, |
| 968 Expression* assign_each) { | 967 Expression* assign_each) { |
| 969 ForEachStatement::Initialize(each, subject, body); | 968 ForEachStatement::Initialize(each, subject, body); |
| 970 assign_iterable_ = assign_iterable; | |
| 971 assign_iterator_ = assign_iterator; | 969 assign_iterator_ = assign_iterator; |
| 972 next_result_ = next_result; | 970 next_result_ = next_result; |
| 973 result_done_ = result_done; | 971 result_done_ = result_done; |
| 974 assign_each_ = assign_each; | 972 assign_each_ = assign_each; |
| 975 } | 973 } |
| 976 | 974 |
| 977 Expression* iterable() const { | 975 Expression* iterable() const { |
| 978 return subject(); | 976 return subject(); |
| 979 } | 977 } |
| 980 | 978 |
| 981 // var iterable = subject; | 979 // var iterator = subject[Symbol.iterator](); |
| 982 Expression* assign_iterable() const { | |
| 983 return assign_iterable_; | |
| 984 } | |
| 985 | |
| 986 // var iterator = iterable[Symbol.iterator](); | |
| 987 Expression* assign_iterator() const { | 980 Expression* assign_iterator() const { |
| 988 return assign_iterator_; | 981 return assign_iterator_; |
| 989 } | 982 } |
| 990 | 983 |
| 991 // var result = iterator.next(); | 984 // var result = iterator.next(); |
| 992 Expression* next_result() const { | 985 Expression* next_result() const { |
| 993 return next_result_; | 986 return next_result_; |
| 994 } | 987 } |
| 995 | 988 |
| 996 // result.done | 989 // result.done |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1011 protected: | 1004 protected: |
| 1012 ForOfStatement(Zone* zone, ZoneList<const AstRawString*>* labels, int pos) | 1005 ForOfStatement(Zone* zone, ZoneList<const AstRawString*>* labels, int pos) |
| 1013 : ForEachStatement(zone, labels, pos), | 1006 : ForEachStatement(zone, labels, pos), |
| 1014 assign_iterator_(NULL), | 1007 assign_iterator_(NULL), |
| 1015 next_result_(NULL), | 1008 next_result_(NULL), |
| 1016 result_done_(NULL), | 1009 result_done_(NULL), |
| 1017 assign_each_(NULL), | 1010 assign_each_(NULL), |
| 1018 back_edge_id_(GetNextId(zone)) { | 1011 back_edge_id_(GetNextId(zone)) { |
| 1019 } | 1012 } |
| 1020 | 1013 |
| 1021 Expression* assign_iterable_; | |
| 1022 Expression* assign_iterator_; | 1014 Expression* assign_iterator_; |
| 1023 Expression* next_result_; | 1015 Expression* next_result_; |
| 1024 Expression* result_done_; | 1016 Expression* result_done_; |
| 1025 Expression* assign_each_; | 1017 Expression* assign_each_; |
| 1026 const BailoutId back_edge_id_; | 1018 const BailoutId back_edge_id_; |
| 1027 }; | 1019 }; |
| 1028 | 1020 |
| 1029 | 1021 |
| 1030 class ExpressionStatement V8_FINAL : public Statement { | 1022 class ExpressionStatement V8_FINAL : public Statement { |
| 1031 public: | 1023 public: |
| (...skipping 2439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3471 private: | 3463 private: |
| 3472 Zone* zone_; | 3464 Zone* zone_; |
| 3473 Visitor visitor_; | 3465 Visitor visitor_; |
| 3474 AstValueFactory* ast_value_factory_; | 3466 AstValueFactory* ast_value_factory_; |
| 3475 }; | 3467 }; |
| 3476 | 3468 |
| 3477 | 3469 |
| 3478 } } // namespace v8::internal | 3470 } } // namespace v8::internal |
| 3479 | 3471 |
| 3480 #endif // V8_AST_H_ | 3472 #endif // V8_AST_H_ |
| OLD | NEW |