OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
998 ZoneList<Statement*>* statements, | 998 ZoneList<Statement*>* statements, |
999 int pos); | 999 int pos); |
1000 | 1000 |
1001 bool is_default() const { return label_ == NULL; } | 1001 bool is_default() const { return label_ == NULL; } |
1002 Expression* label() const { | 1002 Expression* label() const { |
1003 CHECK(!is_default()); | 1003 CHECK(!is_default()); |
1004 return label_; | 1004 return label_; |
1005 } | 1005 } |
1006 Label* body_target() { return &body_target_; } | 1006 Label* body_target() { return &body_target_; } |
1007 ZoneList<Statement*>* statements() const { return statements_; } | 1007 ZoneList<Statement*>* statements() const { return statements_; } |
| 1008 int hit_count() { return hit_count_; } |
1008 | 1009 |
1009 int position() const { return position_; } | 1010 int position() const { return position_; } |
1010 void set_position(int pos) { position_ = pos; } | 1011 void set_position(int pos) { position_ = pos; } |
1011 | 1012 |
1012 BailoutId EntryId() const { return entry_id_; } | 1013 BailoutId EntryId() const { return entry_id_; } |
1013 | 1014 |
1014 // Type feedback information. | 1015 // Type feedback information. |
1015 TypeFeedbackId CompareId() { return compare_id_; } | 1016 TypeFeedbackId CompareId() { return compare_id_; } |
| 1017 TypeFeedbackId CounterId() { return counter_id_; } |
1016 void RecordTypeFeedback(TypeFeedbackOracle* oracle); | 1018 void RecordTypeFeedback(TypeFeedbackOracle* oracle); |
1017 bool IsSmiCompare() { return compare_type_ == SMI_ONLY; } | 1019 bool IsSmiCompare() { return compare_type_ == SMI_ONLY; } |
1018 bool IsNameCompare() { return compare_type_ == NAME_ONLY; } | 1020 bool IsNameCompare() { return compare_type_ == NAME_ONLY; } |
1019 bool IsStringCompare() { return compare_type_ == STRING_ONLY; } | 1021 bool IsStringCompare() { return compare_type_ == STRING_ONLY; } |
1020 bool IsObjectCompare() { return compare_type_ == OBJECT_ONLY; } | 1022 bool IsObjectCompare() { return compare_type_ == OBJECT_ONLY; } |
1021 | 1023 |
1022 private: | 1024 private: |
1023 Expression* label_; | 1025 Expression* label_; |
1024 Label body_target_; | 1026 Label body_target_; |
1025 ZoneList<Statement*>* statements_; | 1027 ZoneList<Statement*>* statements_; |
1026 int position_; | 1028 int position_; |
1027 enum CompareTypeFeedback { | 1029 enum CompareTypeFeedback { |
1028 NONE, | 1030 NONE, |
1029 SMI_ONLY, | 1031 SMI_ONLY, |
1030 NAME_ONLY, | 1032 NAME_ONLY, |
1031 STRING_ONLY, | 1033 STRING_ONLY, |
1032 OBJECT_ONLY | 1034 OBJECT_ONLY |
1033 }; | 1035 }; |
1034 CompareTypeFeedback compare_type_; | 1036 CompareTypeFeedback compare_type_; |
| 1037 int hit_count_; |
1035 const TypeFeedbackId compare_id_; | 1038 const TypeFeedbackId compare_id_; |
| 1039 const TypeFeedbackId counter_id_; |
1036 const BailoutId entry_id_; | 1040 const BailoutId entry_id_; |
1037 }; | 1041 }; |
1038 | 1042 |
1039 | 1043 |
1040 class SwitchStatement: public BreakableStatement { | 1044 class SwitchStatement: public BreakableStatement { |
1041 public: | 1045 public: |
1042 DECLARE_NODE_TYPE(SwitchStatement) | 1046 DECLARE_NODE_TYPE(SwitchStatement) |
1043 | 1047 |
1044 void Initialize(Expression* tag, ZoneList<CaseClause*>* cases) { | 1048 void Initialize(Expression* tag, ZoneList<CaseClause*>* cases) { |
1045 tag_ = tag; | 1049 tag_ = tag; |
(...skipping 2085 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3131 private: | 3135 private: |
3132 Isolate* isolate_; | 3136 Isolate* isolate_; |
3133 Zone* zone_; | 3137 Zone* zone_; |
3134 Visitor visitor_; | 3138 Visitor visitor_; |
3135 }; | 3139 }; |
3136 | 3140 |
3137 | 3141 |
3138 } } // namespace v8::internal | 3142 } } // namespace v8::internal |
3139 | 3143 |
3140 #endif // V8_AST_H_ | 3144 #endif // V8_AST_H_ |
OLD | NEW |