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

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

Issue 1173253004: [turbofan] Ensure lazy bailout point in exception handler. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Ensure space for lazy deopt. Created 5 years, 6 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
« no previous file with comments | « src/compiler/code-generator.cc ('k') | src/compiler/instruction.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 912 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 const int virtual_register_; 923 const int virtual_register_;
924 InstructionOperand output_; 924 InstructionOperand output_;
925 IntVector operands_; 925 IntVector operands_;
926 }; 926 };
927 927
928 928
929 // Analogue of BasicBlock for Instructions instead of Nodes. 929 // Analogue of BasicBlock for Instructions instead of Nodes.
930 class InstructionBlock final : public ZoneObject { 930 class InstructionBlock final : public ZoneObject {
931 public: 931 public:
932 InstructionBlock(Zone* zone, RpoNumber rpo_number, RpoNumber loop_header, 932 InstructionBlock(Zone* zone, RpoNumber rpo_number, RpoNumber loop_header,
933 RpoNumber loop_end, bool deferred); 933 RpoNumber loop_end, bool deferred, bool handler);
934 934
935 // Instruction indexes (used by the register allocator). 935 // Instruction indexes (used by the register allocator).
936 int first_instruction_index() const { 936 int first_instruction_index() const {
937 DCHECK(code_start_ >= 0); 937 DCHECK(code_start_ >= 0);
938 DCHECK(code_end_ > 0); 938 DCHECK(code_end_ > 0);
939 DCHECK(code_end_ >= code_start_); 939 DCHECK(code_end_ >= code_start_);
940 return code_start_; 940 return code_start_;
941 } 941 }
942 int last_instruction_index() const { 942 int last_instruction_index() const {
943 DCHECK(code_start_ >= 0); 943 DCHECK(code_start_ >= 0);
944 DCHECK(code_end_ > 0); 944 DCHECK(code_end_ > 0);
945 DCHECK(code_end_ >= code_start_); 945 DCHECK(code_end_ >= code_start_);
946 return code_end_ - 1; 946 return code_end_ - 1;
947 } 947 }
948 948
949 int32_t code_start() const { return code_start_; } 949 int32_t code_start() const { return code_start_; }
950 void set_code_start(int32_t start) { code_start_ = start; } 950 void set_code_start(int32_t start) { code_start_ = start; }
951 951
952 int32_t code_end() const { return code_end_; } 952 int32_t code_end() const { return code_end_; }
953 void set_code_end(int32_t end) { code_end_ = end; } 953 void set_code_end(int32_t end) { code_end_ = end; }
954 954
955 bool IsDeferred() const { return deferred_; } 955 bool IsDeferred() const { return deferred_; }
956 bool IsHandler() const { return handler_; }
956 957
957 RpoNumber ao_number() const { return ao_number_; } 958 RpoNumber ao_number() const { return ao_number_; }
958 RpoNumber rpo_number() const { return rpo_number_; } 959 RpoNumber rpo_number() const { return rpo_number_; }
959 RpoNumber loop_header() const { return loop_header_; } 960 RpoNumber loop_header() const { return loop_header_; }
960 RpoNumber loop_end() const { 961 RpoNumber loop_end() const {
961 DCHECK(IsLoopHeader()); 962 DCHECK(IsLoopHeader());
962 return loop_end_; 963 return loop_end_;
963 } 964 }
964 inline bool IsLoopHeader() const { return loop_end_.IsValid(); } 965 inline bool IsLoopHeader() const { return loop_end_.IsValid(); }
965 966
(...skipping 27 matching lines...) Expand all
993 Successors successors_; 994 Successors successors_;
994 Predecessors predecessors_; 995 Predecessors predecessors_;
995 PhiInstructions phis_; 996 PhiInstructions phis_;
996 RpoNumber ao_number_; // Assembly order number. 997 RpoNumber ao_number_; // Assembly order number.
997 const RpoNumber rpo_number_; 998 const RpoNumber rpo_number_;
998 const RpoNumber loop_header_; 999 const RpoNumber loop_header_;
999 const RpoNumber loop_end_; 1000 const RpoNumber loop_end_;
1000 int32_t code_start_; // start index of arch-specific code. 1001 int32_t code_start_; // start index of arch-specific code.
1001 int32_t code_end_; // end index of arch-specific code. 1002 int32_t code_end_; // end index of arch-specific code.
1002 const bool deferred_; // Block contains deferred code. 1003 const bool deferred_; // Block contains deferred code.
1004 const bool handler_; // Block is a handler entry point.
1003 bool needs_frame_; 1005 bool needs_frame_;
1004 bool must_construct_frame_; 1006 bool must_construct_frame_;
1005 bool must_deconstruct_frame_; 1007 bool must_deconstruct_frame_;
1006 }; 1008 };
1007 1009
1008 typedef ZoneDeque<Constant> ConstantDeque; 1010 typedef ZoneDeque<Constant> ConstantDeque;
1009 typedef std::map<int, Constant, std::less<int>, 1011 typedef std::map<int, Constant, std::less<int>,
1010 zone_allocator<std::pair<int, Constant> > > ConstantMap; 1012 zone_allocator<std::pair<int, Constant> > > ConstantMap;
1011 1013
1012 typedef ZoneDeque<Instruction*> InstructionDeque; 1014 typedef ZoneDeque<Instruction*> InstructionDeque;
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1199 1201
1200 1202
1201 std::ostream& operator<<(std::ostream& os, 1203 std::ostream& operator<<(std::ostream& os,
1202 const PrintableInstructionSequence& code); 1204 const PrintableInstructionSequence& code);
1203 1205
1204 } // namespace compiler 1206 } // namespace compiler
1205 } // namespace internal 1207 } // namespace internal
1206 } // namespace v8 1208 } // namespace v8
1207 1209
1208 #endif // V8_COMPILER_INSTRUCTION_H_ 1210 #endif // V8_COMPILER_INSTRUCTION_H_
OLDNEW
« no previous file with comments | « src/compiler/code-generator.cc ('k') | src/compiler/instruction.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698