OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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_SCHEDULER_H_ | 5 #ifndef V8_COMPILER_INSTRUCTION_SCHEDULER_H_ |
6 #define V8_COMPILER_INSTRUCTION_SCHEDULER_H_ | 6 #define V8_COMPILER_INSTRUCTION_SCHEDULER_H_ |
7 | 7 |
8 #include "src/compiler/instruction.h" | 8 #include "src/compiler/instruction.h" |
9 #include "src/zone-containers.h" | 9 #include "src/zone-containers.h" |
10 | 10 |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 bool IsLoadOperation(const Instruction* instr) const { | 173 bool IsLoadOperation(const Instruction* instr) const { |
174 return GetInstructionFlags(instr) & kIsLoadOperation; | 174 return GetInstructionFlags(instr) & kIsLoadOperation; |
175 } | 175 } |
176 | 176 |
177 // Identify nops used as a definition point for live-in registers at | 177 // Identify nops used as a definition point for live-in registers at |
178 // function entry. | 178 // function entry. |
179 bool IsFixedRegisterParameter(const Instruction* instr) const { | 179 bool IsFixedRegisterParameter(const Instruction* instr) const { |
180 return (instr->arch_opcode() == kArchNop) && | 180 return (instr->arch_opcode() == kArchNop) && |
181 (instr->OutputCount() == 1) && | 181 (instr->OutputCount() == 1) && |
182 (instr->OutputAt(0)->IsUnallocated()) && | 182 (instr->OutputAt(0)->IsUnallocated()) && |
183 UnallocatedOperand::cast(instr->OutputAt(0))->HasFixedRegisterPolicy(); | 183 (UnallocatedOperand::cast(instr->OutputAt(0))->HasFixedRegisterPolicy() || |
| 184 UnallocatedOperand::cast( |
| 185 instr->OutputAt(0))->HasFixedDoubleRegisterPolicy()); |
184 } | 186 } |
185 | 187 |
186 void ComputeTotalLatencies(); | 188 void ComputeTotalLatencies(); |
187 | 189 |
188 static int GetInstructionLatency(const Instruction* instr); | 190 static int GetInstructionLatency(const Instruction* instr); |
189 | 191 |
190 Zone* zone() { return zone_; } | 192 Zone* zone() { return zone_; } |
191 InstructionSequence* sequence() { return sequence_; } | 193 InstructionSequence* sequence() { return sequence_; } |
192 Isolate* isolate() { return sequence()->isolate(); } | 194 Isolate* isolate() { return sequence()->isolate(); } |
193 | 195 |
(...skipping 15 matching lines...) Expand all Loading... |
209 // All these nops are chained together and added as a predecessor of every | 211 // All these nops are chained together and added as a predecessor of every |
210 // other instructions in the basic block. | 212 // other instructions in the basic block. |
211 ScheduleGraphNode* last_live_in_reg_marker_; | 213 ScheduleGraphNode* last_live_in_reg_marker_; |
212 }; | 214 }; |
213 | 215 |
214 } // namespace compiler | 216 } // namespace compiler |
215 } // namespace internal | 217 } // namespace internal |
216 } // namespace v8 | 218 } // namespace v8 |
217 | 219 |
218 #endif // V8_COMPILER_INSTRUCTION_SCHEDULER_H_ | 220 #endif // V8_COMPILER_INSTRUCTION_SCHEDULER_H_ |
OLD | NEW |