| 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_CRANKSHAFT_HYDROGEN_H_ | 5 #ifndef V8_CRANKSHAFT_HYDROGEN_H_ |
| 6 #define V8_CRANKSHAFT_HYDROGEN_H_ | 6 #define V8_CRANKSHAFT_HYDROGEN_H_ |
| 7 | 7 |
| 8 #include "src/accessors.h" | 8 #include "src/accessors.h" |
| 9 #include "src/allocation.h" | 9 #include "src/allocation.h" |
| 10 #include "src/ast/ast.h" | 10 #include "src/ast/ast.h" |
| (...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 InliningKind inlining_kind, | 618 InliningKind inlining_kind, |
| 619 TailCallMode syntactic_tail_call_mode) const; | 619 TailCallMode syntactic_tail_call_mode) const; |
| 620 | 620 |
| 621 HEnvironment* DiscardInlined(bool drop_extra) { | 621 HEnvironment* DiscardInlined(bool drop_extra) { |
| 622 HEnvironment* outer = outer_; | 622 HEnvironment* outer = outer_; |
| 623 while (outer->frame_type() != JS_FUNCTION && | 623 while (outer->frame_type() != JS_FUNCTION && |
| 624 outer->frame_type() != TAIL_CALLER_FUNCTION) { | 624 outer->frame_type() != TAIL_CALLER_FUNCTION) { |
| 625 outer = outer->outer_; | 625 outer = outer->outer_; |
| 626 } | 626 } |
| 627 if (drop_extra) outer->Drop(1); | 627 if (drop_extra) outer->Drop(1); |
| 628 if (outer->frame_type() == TAIL_CALLER_FUNCTION) { |
| 629 outer->ClearTailCallerMark(); |
| 630 } |
| 628 return outer; | 631 return outer; |
| 629 } | 632 } |
| 630 | 633 |
| 631 void AddIncomingEdge(HBasicBlock* block, HEnvironment* other); | 634 void AddIncomingEdge(HBasicBlock* block, HEnvironment* other); |
| 632 | 635 |
| 633 void ClearHistory() { | 636 void ClearHistory() { |
| 634 pop_count_ = 0; | 637 pop_count_ = 0; |
| 635 push_count_ = 0; | 638 push_count_ = 0; |
| 636 assigned_variables_.Clear(); | 639 assigned_variables_.Clear(); |
| 637 } | 640 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 // Create an artificial stub environment (e.g. for argument adaptor or | 681 // Create an artificial stub environment (e.g. for argument adaptor or |
| 679 // constructor stub). | 682 // constructor stub). |
| 680 HEnvironment* CreateStubEnvironment(HEnvironment* outer, | 683 HEnvironment* CreateStubEnvironment(HEnvironment* outer, |
| 681 Handle<JSFunction> target, | 684 Handle<JSFunction> target, |
| 682 FrameType frame_type, | 685 FrameType frame_type, |
| 683 int arguments) const; | 686 int arguments) const; |
| 684 | 687 |
| 685 // Marks current environment as tail caller by setting frame type to | 688 // Marks current environment as tail caller by setting frame type to |
| 686 // TAIL_CALLER_FUNCTION. | 689 // TAIL_CALLER_FUNCTION. |
| 687 void MarkAsTailCaller(); | 690 void MarkAsTailCaller(); |
| 691 void ClearTailCallerMark(); |
| 688 | 692 |
| 689 // True if index is included in the expression stack part of the environment. | 693 // True if index is included in the expression stack part of the environment. |
| 690 bool HasExpressionAt(int index) const; | 694 bool HasExpressionAt(int index) const; |
| 691 | 695 |
| 692 void Initialize(int parameter_count, int local_count, int stack_height); | 696 void Initialize(int parameter_count, int local_count, int stack_height); |
| 693 void Initialize(const HEnvironment* other); | 697 void Initialize(const HEnvironment* other); |
| 694 | 698 |
| 695 Handle<JSFunction> closure_; | 699 Handle<JSFunction> closure_; |
| 696 // Value array [parameters] [specials] [locals] [temporaries]. | 700 // Value array [parameters] [specials] [locals] [temporaries]. |
| 697 ZoneList<HValue*> values_; | 701 ZoneList<HValue*> values_; |
| (...skipping 2387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3085 } | 3089 } |
| 3086 | 3090 |
| 3087 private: | 3091 private: |
| 3088 HOptimizedGraphBuilder* builder_; | 3092 HOptimizedGraphBuilder* builder_; |
| 3089 }; | 3093 }; |
| 3090 | 3094 |
| 3091 } // namespace internal | 3095 } // namespace internal |
| 3092 } // namespace v8 | 3096 } // namespace v8 |
| 3093 | 3097 |
| 3094 #endif // V8_CRANKSHAFT_HYDROGEN_H_ | 3098 #endif // V8_CRANKSHAFT_HYDROGEN_H_ |
| OLD | NEW |