| 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 |