| 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_SELECTOR_H_ | 5 #ifndef V8_COMPILER_INSTRUCTION_SELECTOR_H_ |
| 6 #define V8_COMPILER_INSTRUCTION_SELECTOR_H_ | 6 #define V8_COMPILER_INSTRUCTION_SELECTOR_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "src/compiler/common-operator.h" | 10 #include "src/compiler/common-operator.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 Zone* zone, size_t node_count, Linkage* linkage, | 54 Zone* zone, size_t node_count, Linkage* linkage, |
| 55 InstructionSequence* sequence, Schedule* schedule, | 55 InstructionSequence* sequence, Schedule* schedule, |
| 56 SourcePositionTable* source_positions, Frame* frame, | 56 SourcePositionTable* source_positions, Frame* frame, |
| 57 SourcePositionMode source_position_mode = kCallSourcePositions, | 57 SourcePositionMode source_position_mode = kCallSourcePositions, |
| 58 Features features = SupportedFeatures(), | 58 Features features = SupportedFeatures(), |
| 59 EnableScheduling enable_scheduling = FLAG_turbo_instruction_scheduling | 59 EnableScheduling enable_scheduling = FLAG_turbo_instruction_scheduling |
| 60 ? kEnableScheduling | 60 ? kEnableScheduling |
| 61 : kDisableScheduling); | 61 : kDisableScheduling); |
| 62 | 62 |
| 63 // Visit code for the entire graph with the included schedule. | 63 // Visit code for the entire graph with the included schedule. |
| 64 void SelectInstructions(); | 64 bool SelectInstructions(); |
| 65 | 65 |
| 66 void StartBlock(RpoNumber rpo); | 66 void StartBlock(RpoNumber rpo); |
| 67 void EndBlock(RpoNumber rpo); | 67 void EndBlock(RpoNumber rpo); |
| 68 void AddInstruction(Instruction* instr); | 68 void AddInstruction(Instruction* instr); |
| 69 | 69 |
| 70 // =========================================================================== | 70 // =========================================================================== |
| 71 // ============= Architecture-independent code emission methods. ============= | 71 // ============= Architecture-independent code emission methods. ============= |
| 72 // =========================================================================== | 72 // =========================================================================== |
| 73 | 73 |
| 74 Instruction* Emit(InstructionCode opcode, InstructionOperand output, | 74 Instruction* Emit(InstructionCode opcode, InstructionOperand output, |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 bool CanProduceSignalingNaN(Node* node); | 325 bool CanProduceSignalingNaN(Node* node); |
| 326 | 326 |
| 327 // =========================================================================== | 327 // =========================================================================== |
| 328 | 328 |
| 329 Schedule* schedule() const { return schedule_; } | 329 Schedule* schedule() const { return schedule_; } |
| 330 Linkage* linkage() const { return linkage_; } | 330 Linkage* linkage() const { return linkage_; } |
| 331 InstructionSequence* sequence() const { return sequence_; } | 331 InstructionSequence* sequence() const { return sequence_; } |
| 332 Zone* instruction_zone() const { return sequence()->zone(); } | 332 Zone* instruction_zone() const { return sequence()->zone(); } |
| 333 Zone* zone() const { return zone_; } | 333 Zone* zone() const { return zone_; } |
| 334 | 334 |
| 335 void set_instruction_selection_failed() { |
| 336 instruction_selection_failed_ = true; |
| 337 } |
| 338 bool instruction_selection_failed() { return instruction_selection_failed_; } |
| 339 |
| 335 // =========================================================================== | 340 // =========================================================================== |
| 336 | 341 |
| 337 Zone* const zone_; | 342 Zone* const zone_; |
| 338 Linkage* const linkage_; | 343 Linkage* const linkage_; |
| 339 InstructionSequence* const sequence_; | 344 InstructionSequence* const sequence_; |
| 340 SourcePositionTable* const source_positions_; | 345 SourcePositionTable* const source_positions_; |
| 341 SourcePositionMode const source_position_mode_; | 346 SourcePositionMode const source_position_mode_; |
| 342 Features features_; | 347 Features features_; |
| 343 Schedule* const schedule_; | 348 Schedule* const schedule_; |
| 344 BasicBlock* current_block_; | 349 BasicBlock* current_block_; |
| 345 ZoneVector<Instruction*> instructions_; | 350 ZoneVector<Instruction*> instructions_; |
| 346 BoolVector defined_; | 351 BoolVector defined_; |
| 347 BoolVector used_; | 352 BoolVector used_; |
| 348 IntVector effect_level_; | 353 IntVector effect_level_; |
| 349 IntVector virtual_registers_; | 354 IntVector virtual_registers_; |
| 350 IntVector virtual_register_rename_; | 355 IntVector virtual_register_rename_; |
| 351 InstructionScheduler* scheduler_; | 356 InstructionScheduler* scheduler_; |
| 352 EnableScheduling enable_scheduling_; | 357 EnableScheduling enable_scheduling_; |
| 353 Frame* frame_; | 358 Frame* frame_; |
| 359 bool instruction_selection_failed_; |
| 354 }; | 360 }; |
| 355 | 361 |
| 356 } // namespace compiler | 362 } // namespace compiler |
| 357 } // namespace internal | 363 } // namespace internal |
| 358 } // namespace v8 | 364 } // namespace v8 |
| 359 | 365 |
| 360 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_H_ | 366 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_H_ |
| OLD | NEW |