OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_COMPILER_INSTRUCTION_H_ | 5 #ifndef V8_COMPILER_INSTRUCTION_H_ |
6 #define V8_COMPILER_INSTRUCTION_H_ | 6 #define V8_COMPILER_INSTRUCTION_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <iosfwd> | 9 #include <iosfwd> |
10 #include <map> | 10 #include <map> |
(...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 Successors& successors() { return successors_; } | 921 Successors& successors() { return successors_; } |
922 const Successors& successors() const { return successors_; } | 922 const Successors& successors() const { return successors_; } |
923 size_t SuccessorCount() const { return successors_.size(); } | 923 size_t SuccessorCount() const { return successors_.size(); } |
924 | 924 |
925 typedef ZoneVector<PhiInstruction*> PhiInstructions; | 925 typedef ZoneVector<PhiInstruction*> PhiInstructions; |
926 const PhiInstructions& phis() const { return phis_; } | 926 const PhiInstructions& phis() const { return phis_; } |
927 void AddPhi(PhiInstruction* phi) { phis_.push_back(phi); } | 927 void AddPhi(PhiInstruction* phi) { phis_.push_back(phi); } |
928 | 928 |
929 void set_ao_number(RpoNumber ao_number) { ao_number_ = ao_number; } | 929 void set_ao_number(RpoNumber ao_number) { ao_number_ = ao_number; } |
930 | 930 |
| 931 bool needs_frame() const { return needs_frame_; } |
| 932 void mark_needs_frame() { needs_frame_ = true; } |
| 933 |
| 934 bool must_construct_frame() const { return must_construct_frame_; } |
| 935 void mark_must_construct_frame() { must_construct_frame_ = true; } |
| 936 |
| 937 bool must_deconstruct_frame() const { return must_deconstruct_frame_; } |
| 938 void mark_must_deconstruct_frame() { must_deconstruct_frame_ = true; } |
| 939 |
931 private: | 940 private: |
932 Successors successors_; | 941 Successors successors_; |
933 Predecessors predecessors_; | 942 Predecessors predecessors_; |
934 PhiInstructions phis_; | 943 PhiInstructions phis_; |
935 RpoNumber ao_number_; // Assembly order number. | 944 RpoNumber ao_number_; // Assembly order number. |
936 const RpoNumber rpo_number_; | 945 const RpoNumber rpo_number_; |
937 const RpoNumber loop_header_; | 946 const RpoNumber loop_header_; |
938 const RpoNumber loop_end_; | 947 const RpoNumber loop_end_; |
939 int32_t code_start_; // start index of arch-specific code. | 948 int32_t code_start_; // start index of arch-specific code. |
940 int32_t code_end_; // end index of arch-specific code. | 949 int32_t code_end_; // end index of arch-specific code. |
941 const bool deferred_; // Block contains deferred code. | 950 const bool deferred_; // Block contains deferred code. |
| 951 bool needs_frame_; |
| 952 bool must_construct_frame_; |
| 953 bool must_deconstruct_frame_; |
942 }; | 954 }; |
943 | 955 |
944 typedef ZoneDeque<Constant> ConstantDeque; | 956 typedef ZoneDeque<Constant> ConstantDeque; |
945 typedef std::map<int, Constant, std::less<int>, | 957 typedef std::map<int, Constant, std::less<int>, |
946 zone_allocator<std::pair<int, Constant> > > ConstantMap; | 958 zone_allocator<std::pair<int, Constant> > > ConstantMap; |
947 | 959 |
948 typedef ZoneDeque<Instruction*> InstructionDeque; | 960 typedef ZoneDeque<Instruction*> InstructionDeque; |
949 typedef ZoneDeque<ReferenceMap*> ReferenceMapDeque; | 961 typedef ZoneDeque<ReferenceMap*> ReferenceMapDeque; |
950 typedef ZoneVector<FrameStateDescriptor*> DeoptimizationVector; | 962 typedef ZoneVector<FrameStateDescriptor*> DeoptimizationVector; |
951 typedef ZoneVector<InstructionBlock*> InstructionBlocks; | 963 typedef ZoneVector<InstructionBlock*> InstructionBlocks; |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1114 | 1126 |
1115 | 1127 |
1116 std::ostream& operator<<(std::ostream& os, | 1128 std::ostream& operator<<(std::ostream& os, |
1117 const PrintableInstructionSequence& code); | 1129 const PrintableInstructionSequence& code); |
1118 | 1130 |
1119 } // namespace compiler | 1131 } // namespace compiler |
1120 } // namespace internal | 1132 } // namespace internal |
1121 } // namespace v8 | 1133 } // namespace v8 |
1122 | 1134 |
1123 #endif // V8_COMPILER_INSTRUCTION_H_ | 1135 #endif // V8_COMPILER_INSTRUCTION_H_ |
OLD | NEW |