| 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/assembler.h" | 8 #include "src/assembler.h" |
| 9 #include "src/ast-value-factory.h" | 9 #include "src/ast-value-factory.h" |
| 10 #include "src/bailout-reason.h" | 10 #include "src/bailout-reason.h" |
| (...skipping 3658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3669 | 3669 |
| 3670 EmptyParentheses* NewEmptyParentheses(int pos) { | 3670 EmptyParentheses* NewEmptyParentheses(int pos) { |
| 3671 return new (local_zone_) EmptyParentheses(local_zone_, pos); | 3671 return new (local_zone_) EmptyParentheses(local_zone_, pos); |
| 3672 } | 3672 } |
| 3673 | 3673 |
| 3674 Zone* zone() const { return local_zone_; } | 3674 Zone* zone() const { return local_zone_; } |
| 3675 | 3675 |
| 3676 // Handles use of temporary zones when parsing inner function bodies. | 3676 // Handles use of temporary zones when parsing inner function bodies. |
| 3677 class BodyScope { | 3677 class BodyScope { |
| 3678 public: | 3678 public: |
| 3679 BodyScope(AstNodeFactory* factory, Zone* temp_zone, bool can_use_temp_zone) | 3679 BodyScope(AstNodeFactory* factory, Zone* temp_zone, bool use_temp_zone) |
| 3680 : factory_(factory), prev_zone_(factory->local_zone_) { | 3680 : factory_(factory), prev_zone_(factory->local_zone_) { |
| 3681 if (can_use_temp_zone) { | 3681 if (use_temp_zone) { |
| 3682 factory->local_zone_ = temp_zone; | 3682 factory->local_zone_ = temp_zone; |
| 3683 } | 3683 } |
| 3684 } | 3684 } |
| 3685 | 3685 |
| 3686 ~BodyScope() { factory_->local_zone_ = prev_zone_; } | 3686 ~BodyScope() { factory_->local_zone_ = prev_zone_; } |
| 3687 | 3687 |
| 3688 private: | 3688 private: |
| 3689 AstNodeFactory* factory_; | 3689 AstNodeFactory* factory_; |
| 3690 Zone* prev_zone_; | 3690 Zone* prev_zone_; |
| 3691 }; | 3691 }; |
| 3692 | 3692 |
| 3693 private: | 3693 private: |
| 3694 // This zone may be deallocated upon returning from parsing a function body | 3694 // This zone may be deallocated upon returning from parsing a function body |
| 3695 // which we can guarantee is not going to be compiled or have its AST | 3695 // which we can guarantee is not going to be compiled or have its AST |
| 3696 // inspected. | 3696 // inspected. |
| 3697 // See ParseFunctionLiteral in parser.cc for preconditions. | 3697 // See ParseFunctionLiteral in parser.cc for preconditions. |
| 3698 Zone* local_zone_; | 3698 Zone* local_zone_; |
| 3699 // ZoneObjects which need to persist until scope analysis must be allocated in | 3699 // ZoneObjects which need to persist until scope analysis must be allocated in |
| 3700 // the parser-level zone. | 3700 // the parser-level zone. |
| 3701 Zone* parser_zone_; | 3701 Zone* parser_zone_; |
| 3702 AstValueFactory* ast_value_factory_; | 3702 AstValueFactory* ast_value_factory_; |
| 3703 }; | 3703 }; |
| 3704 | 3704 |
| 3705 | 3705 |
| 3706 } } // namespace v8::internal | 3706 } } // namespace v8::internal |
| 3707 | 3707 |
| 3708 #endif // V8_AST_H_ | 3708 #endif // V8_AST_H_ |
| OLD | NEW |