| 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 "v8.h" | 8 #include "v8.h" |
| 9 | 9 |
| 10 #include "assembler.h" | 10 #include "assembler.h" |
| (...skipping 2867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2878 \ | 2878 \ |
| 2879 Zone* zone_; \ | 2879 Zone* zone_; \ |
| 2880 bool stack_overflow_ | 2880 bool stack_overflow_ |
| 2881 | 2881 |
| 2882 | 2882 |
| 2883 // ---------------------------------------------------------------------------- | 2883 // ---------------------------------------------------------------------------- |
| 2884 // Construction time visitor. | 2884 // Construction time visitor. |
| 2885 | 2885 |
| 2886 class AstConstructionVisitor BASE_EMBEDDED { | 2886 class AstConstructionVisitor BASE_EMBEDDED { |
| 2887 public: | 2887 public: |
| 2888 explicit AstConstructionVisitor(Zone* zone) | 2888 AstConstructionVisitor() : dont_optimize_reason_(kNoReason) { } |
| 2889 : dont_optimize_reason_(kNoReason), | |
| 2890 zone_(zone) { } | |
| 2891 | 2889 |
| 2892 AstProperties* ast_properties() { return &properties_; } | 2890 AstProperties* ast_properties() { return &properties_; } |
| 2893 BailoutReason dont_optimize_reason() { return dont_optimize_reason_; } | 2891 BailoutReason dont_optimize_reason() { return dont_optimize_reason_; } |
| 2894 | 2892 |
| 2895 private: | 2893 private: |
| 2896 template<class> friend class AstNodeFactory; | 2894 template<class> friend class AstNodeFactory; |
| 2897 | 2895 |
| 2898 // Node visitors. | 2896 // Node visitors. |
| 2899 #define DEF_VISIT(type) \ | 2897 #define DEF_VISIT(type) \ |
| 2900 void Visit##type(type* node); | 2898 void Visit##type(type* node); |
| 2901 AST_NODE_LIST(DEF_VISIT) | 2899 AST_NODE_LIST(DEF_VISIT) |
| 2902 #undef DEF_VISIT | 2900 #undef DEF_VISIT |
| 2903 | 2901 |
| 2904 void increase_node_count() { properties_.add_node_count(1); } | 2902 void increase_node_count() { properties_.add_node_count(1); } |
| 2905 void add_flag(AstPropertiesFlag flag) { properties_.flags()->Add(flag); } | 2903 void add_flag(AstPropertiesFlag flag) { properties_.flags()->Add(flag); } |
| 2906 void set_dont_optimize_reason(BailoutReason reason) { | 2904 void set_dont_optimize_reason(BailoutReason reason) { |
| 2907 dont_optimize_reason_ = reason; | 2905 dont_optimize_reason_ = reason; |
| 2908 } | 2906 } |
| 2909 | 2907 |
| 2910 void add_slot_node(FeedbackSlotInterface* slot_node) { | 2908 void add_slot_node(FeedbackSlotInterface* slot_node) { |
| 2911 int count = slot_node->ComputeFeedbackSlotCount(); | 2909 int count = slot_node->ComputeFeedbackSlotCount(); |
| 2912 if (count > 0) { | 2910 if (count > 0) { |
| 2913 slot_node->SetFirstFeedbackSlot(properties_.feedback_slots()); | 2911 slot_node->SetFirstFeedbackSlot(properties_.feedback_slots()); |
| 2914 properties_.increase_feedback_slots(count); | 2912 properties_.increase_feedback_slots(count); |
| 2915 } | 2913 } |
| 2916 } | 2914 } |
| 2917 | 2915 |
| 2918 AstProperties properties_; | 2916 AstProperties properties_; |
| 2919 BailoutReason dont_optimize_reason_; | 2917 BailoutReason dont_optimize_reason_; |
| 2920 Zone* zone_; | |
| 2921 }; | 2918 }; |
| 2922 | 2919 |
| 2923 | 2920 |
| 2924 class AstNullVisitor BASE_EMBEDDED { | 2921 class AstNullVisitor BASE_EMBEDDED { |
| 2925 public: | 2922 public: |
| 2926 explicit AstNullVisitor(Zone* zone) {} | |
| 2927 | |
| 2928 // Node visitors. | 2923 // Node visitors. |
| 2929 #define DEF_VISIT(type) \ | 2924 #define DEF_VISIT(type) \ |
| 2930 void Visit##type(type* node) {} | 2925 void Visit##type(type* node) {} |
| 2931 AST_NODE_LIST(DEF_VISIT) | 2926 AST_NODE_LIST(DEF_VISIT) |
| 2932 #undef DEF_VISIT | 2927 #undef DEF_VISIT |
| 2933 }; | 2928 }; |
| 2934 | 2929 |
| 2935 | 2930 |
| 2936 | 2931 |
| 2937 // ---------------------------------------------------------------------------- | 2932 // ---------------------------------------------------------------------------- |
| 2938 // AstNode factory | 2933 // AstNode factory |
| 2939 | 2934 |
| 2940 template<class Visitor> | 2935 template<class Visitor> |
| 2941 class AstNodeFactory V8_FINAL BASE_EMBEDDED { | 2936 class AstNodeFactory V8_FINAL BASE_EMBEDDED { |
| 2942 public: | 2937 public: |
| 2943 explicit AstNodeFactory(Zone* zone) | 2938 explicit AstNodeFactory(Zone* zone) : zone_(zone) { } |
| 2944 : zone_(zone), | |
| 2945 visitor_(zone) { } | |
| 2946 | 2939 |
| 2947 Visitor* visitor() { return &visitor_; } | 2940 Visitor* visitor() { return &visitor_; } |
| 2948 | 2941 |
| 2949 #define VISIT_AND_RETURN(NodeType, node) \ | 2942 #define VISIT_AND_RETURN(NodeType, node) \ |
| 2950 visitor_.Visit##NodeType((node)); \ | 2943 visitor_.Visit##NodeType((node)); \ |
| 2951 return node; | 2944 return node; |
| 2952 | 2945 |
| 2953 VariableDeclaration* NewVariableDeclaration(VariableProxy* proxy, | 2946 VariableDeclaration* NewVariableDeclaration(VariableProxy* proxy, |
| 2954 VariableMode mode, | 2947 VariableMode mode, |
| 2955 Scope* scope, | 2948 Scope* scope, |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3340 | 3333 |
| 3341 private: | 3334 private: |
| 3342 Zone* zone_; | 3335 Zone* zone_; |
| 3343 Visitor visitor_; | 3336 Visitor visitor_; |
| 3344 }; | 3337 }; |
| 3345 | 3338 |
| 3346 | 3339 |
| 3347 } } // namespace v8::internal | 3340 } } // namespace v8::internal |
| 3348 | 3341 |
| 3349 #endif // V8_AST_H_ | 3342 #endif // V8_AST_H_ |
| OLD | NEW |