Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(612)

Side by Side Diff: src/ast.h

Issue 416033002: For-of on null or undefined is an error (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/ast-value-factory.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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_
OLDNEW
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/ast-value-factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698