| 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_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 1371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1382 return instruction_blocks_->at(rpo_number.ToSize()); | 1382 return instruction_blocks_->at(rpo_number.ToSize()); |
| 1383 } | 1383 } |
| 1384 | 1384 |
| 1385 InstructionBlock* GetInstructionBlock(int instruction_index) const; | 1385 InstructionBlock* GetInstructionBlock(int instruction_index) const; |
| 1386 | 1386 |
| 1387 static MachineRepresentation DefaultRepresentation() { | 1387 static MachineRepresentation DefaultRepresentation() { |
| 1388 return MachineType::PointerRepresentation(); | 1388 return MachineType::PointerRepresentation(); |
| 1389 } | 1389 } |
| 1390 MachineRepresentation GetRepresentation(int virtual_register) const; | 1390 MachineRepresentation GetRepresentation(int virtual_register) const; |
| 1391 void MarkAsRepresentation(MachineRepresentation rep, int virtual_register); | 1391 void MarkAsRepresentation(MachineRepresentation rep, int virtual_register); |
| 1392 int representation_mask() const { return representation_mask_; } |
| 1392 | 1393 |
| 1393 bool IsReference(int virtual_register) const { | 1394 bool IsReference(int virtual_register) const { |
| 1394 return CanBeTaggedPointer(GetRepresentation(virtual_register)); | 1395 return CanBeTaggedPointer(GetRepresentation(virtual_register)); |
| 1395 } | 1396 } |
| 1396 bool IsFP(int virtual_register) const { | 1397 bool IsFP(int virtual_register) const { |
| 1397 return IsFloatingPoint(GetRepresentation(virtual_register)); | 1398 return IsFloatingPoint(GetRepresentation(virtual_register)); |
| 1398 } | 1399 } |
| 1399 bool IsFloat(int virtual_register) const { | |
| 1400 return GetRepresentation(virtual_register) == | |
| 1401 MachineRepresentation::kFloat32; | |
| 1402 } | |
| 1403 bool IsDouble(int virtual_register) const { | |
| 1404 return GetRepresentation(virtual_register) == | |
| 1405 MachineRepresentation::kFloat64; | |
| 1406 } | |
| 1407 | 1400 |
| 1408 Instruction* GetBlockStart(RpoNumber rpo) const; | 1401 Instruction* GetBlockStart(RpoNumber rpo) const; |
| 1409 | 1402 |
| 1410 typedef InstructionDeque::const_iterator const_iterator; | 1403 typedef InstructionDeque::const_iterator const_iterator; |
| 1411 const_iterator begin() const { return instructions_.begin(); } | 1404 const_iterator begin() const { return instructions_.begin(); } |
| 1412 const_iterator end() const { return instructions_.end(); } | 1405 const_iterator end() const { return instructions_.end(); } |
| 1413 const InstructionDeque& instructions() const { return instructions_; } | 1406 const InstructionDeque& instructions() const { return instructions_; } |
| 1414 int LastInstructionIndex() const { | 1407 int LastInstructionIndex() const { |
| 1415 return static_cast<int>(instructions().size()) - 1; | 1408 return static_cast<int>(instructions().size()) - 1; |
| 1416 } | 1409 } |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1514 Isolate* isolate_; | 1507 Isolate* isolate_; |
| 1515 Zone* const zone_; | 1508 Zone* const zone_; |
| 1516 InstructionBlocks* const instruction_blocks_; | 1509 InstructionBlocks* const instruction_blocks_; |
| 1517 SourcePositionMap source_positions_; | 1510 SourcePositionMap source_positions_; |
| 1518 ConstantMap constants_; | 1511 ConstantMap constants_; |
| 1519 Immediates immediates_; | 1512 Immediates immediates_; |
| 1520 InstructionDeque instructions_; | 1513 InstructionDeque instructions_; |
| 1521 int next_virtual_register_; | 1514 int next_virtual_register_; |
| 1522 ReferenceMapDeque reference_maps_; | 1515 ReferenceMapDeque reference_maps_; |
| 1523 ZoneVector<MachineRepresentation> representations_; | 1516 ZoneVector<MachineRepresentation> representations_; |
| 1517 int representation_mask_; |
| 1524 DeoptimizationVector deoptimization_entries_; | 1518 DeoptimizationVector deoptimization_entries_; |
| 1525 | 1519 |
| 1526 // Used at construction time | 1520 // Used at construction time |
| 1527 InstructionBlock* current_block_; | 1521 InstructionBlock* current_block_; |
| 1528 | 1522 |
| 1529 DISALLOW_COPY_AND_ASSIGN(InstructionSequence); | 1523 DISALLOW_COPY_AND_ASSIGN(InstructionSequence); |
| 1530 }; | 1524 }; |
| 1531 | 1525 |
| 1532 | 1526 |
| 1533 struct PrintableInstructionSequence { | 1527 struct PrintableInstructionSequence { |
| 1534 const RegisterConfiguration* register_configuration_; | 1528 const RegisterConfiguration* register_configuration_; |
| 1535 const InstructionSequence* sequence_; | 1529 const InstructionSequence* sequence_; |
| 1536 }; | 1530 }; |
| 1537 | 1531 |
| 1538 V8_EXPORT_PRIVATE std::ostream& operator<<( | 1532 V8_EXPORT_PRIVATE std::ostream& operator<<( |
| 1539 std::ostream& os, const PrintableInstructionSequence& code); | 1533 std::ostream& os, const PrintableInstructionSequence& code); |
| 1540 | 1534 |
| 1541 } // namespace compiler | 1535 } // namespace compiler |
| 1542 } // namespace internal | 1536 } // namespace internal |
| 1543 } // namespace v8 | 1537 } // namespace v8 |
| 1544 | 1538 |
| 1545 #endif // V8_COMPILER_INSTRUCTION_H_ | 1539 #endif // V8_COMPILER_INSTRUCTION_H_ |
| OLD | NEW |