Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(335)

Side by Side Diff: src/compiler/instruction.h

Issue 1305393003: [turbofan] Deferred blocks splintering. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 763 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 static RpoNumber Invalid() { return RpoNumber(kInvalidRpoNumber); } 774 static RpoNumber Invalid() { return RpoNumber(kInvalidRpoNumber); }
775 775
776 bool IsNext(const RpoNumber other) const { 776 bool IsNext(const RpoNumber other) const {
777 DCHECK(IsValid()); 777 DCHECK(IsValid());
778 return other.index_ == this->index_ + 1; 778 return other.index_ == this->index_ + 1;
779 } 779 }
780 780
781 bool operator==(RpoNumber other) const { 781 bool operator==(RpoNumber other) const {
782 return this->index_ == other.index_; 782 return this->index_ == other.index_;
783 } 783 }
784 784
Benedikt Meurer 2015/08/24 04:33:26 Nit: please add operator!= for consistency.
Mircea Trofin 2015/08/24 20:55:10 Done.
785 bool operator>(RpoNumber other) const { return index_ > other.index_; }
786 bool operator<(RpoNumber other) const { return index_ < other.index_; }
787 bool operator<=(RpoNumber other) const { return index_ <= other.index_; }
788 bool operator>=(RpoNumber other) const { return index_ >= other.index_; }
789
785 private: 790 private:
786 explicit RpoNumber(int32_t index) : index_(index) {} 791 explicit RpoNumber(int32_t index) : index_(index) {}
787 int32_t index_; 792 int32_t index_;
788 }; 793 };
789 794
790 795
791 std::ostream& operator<<(std::ostream&, const RpoNumber&); 796 std::ostream& operator<<(std::ostream&, const RpoNumber&);
792 797
793 798
794 class Constant final { 799 class Constant final {
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 990
986 bool needs_frame() const { return needs_frame_; } 991 bool needs_frame() const { return needs_frame_; }
987 void mark_needs_frame() { needs_frame_ = true; } 992 void mark_needs_frame() { needs_frame_ = true; }
988 993
989 bool must_construct_frame() const { return must_construct_frame_; } 994 bool must_construct_frame() const { return must_construct_frame_; }
990 void mark_must_construct_frame() { must_construct_frame_ = true; } 995 void mark_must_construct_frame() { must_construct_frame_ = true; }
991 996
992 bool must_deconstruct_frame() const { return must_deconstruct_frame_; } 997 bool must_deconstruct_frame() const { return must_deconstruct_frame_; }
993 void mark_must_deconstruct_frame() { must_deconstruct_frame_ = true; } 998 void mark_must_deconstruct_frame() { must_deconstruct_frame_ = true; }
994 999
1000 void set_last_deferred(RpoNumber last) { last_deferred_ = last; }
1001 RpoNumber last_deferred() const { return last_deferred_; }
1002
995 private: 1003 private:
996 Successors successors_; 1004 Successors successors_;
997 Predecessors predecessors_; 1005 Predecessors predecessors_;
998 PhiInstructions phis_; 1006 PhiInstructions phis_;
999 RpoNumber ao_number_; // Assembly order number. 1007 RpoNumber ao_number_; // Assembly order number.
1000 const RpoNumber rpo_number_; 1008 const RpoNumber rpo_number_;
1001 const RpoNumber loop_header_; 1009 const RpoNumber loop_header_;
1002 const RpoNumber loop_end_; 1010 const RpoNumber loop_end_;
1003 int32_t code_start_; // start index of arch-specific code. 1011 int32_t code_start_; // start index of arch-specific code.
1004 int32_t code_end_; // end index of arch-specific code. 1012 int32_t code_end_; // end index of arch-specific code.
1005 const bool deferred_; // Block contains deferred code. 1013 const bool deferred_; // Block contains deferred code.
1006 const bool handler_; // Block is a handler entry point. 1014 const bool handler_; // Block is a handler entry point.
1007 bool needs_frame_; 1015 bool needs_frame_;
1008 bool must_construct_frame_; 1016 bool must_construct_frame_;
1009 bool must_deconstruct_frame_; 1017 bool must_deconstruct_frame_;
1018 RpoNumber last_deferred_;
1010 }; 1019 };
1011 1020
1012 typedef ZoneDeque<Constant> ConstantDeque; 1021 typedef ZoneDeque<Constant> ConstantDeque;
1013 typedef std::map<int, Constant, std::less<int>, 1022 typedef std::map<int, Constant, std::less<int>,
1014 zone_allocator<std::pair<int, Constant> > > ConstantMap; 1023 zone_allocator<std::pair<int, Constant> > > ConstantMap;
1015 1024
1016 typedef ZoneDeque<Instruction*> InstructionDeque; 1025 typedef ZoneDeque<Instruction*> InstructionDeque;
1017 typedef ZoneDeque<ReferenceMap*> ReferenceMapDeque; 1026 typedef ZoneDeque<ReferenceMap*> ReferenceMapDeque;
1018 typedef ZoneVector<FrameStateDescriptor*> DeoptimizationVector; 1027 typedef ZoneVector<FrameStateDescriptor*> DeoptimizationVector;
1019 typedef ZoneVector<InstructionBlock*> InstructionBlocks; 1028 typedef ZoneVector<InstructionBlock*> InstructionBlocks;
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1205 1214
1206 1215
1207 std::ostream& operator<<(std::ostream& os, 1216 std::ostream& operator<<(std::ostream& os,
1208 const PrintableInstructionSequence& code); 1217 const PrintableInstructionSequence& code);
1209 1218
1210 } // namespace compiler 1219 } // namespace compiler
1211 } // namespace internal 1220 } // namespace internal
1212 } // namespace v8 1221 } // namespace v8
1213 1222
1214 #endif // V8_COMPILER_INSTRUCTION_H_ 1223 #endif // V8_COMPILER_INSTRUCTION_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698