| 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 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 591 }; | 591 }; |
| 592 | 592 |
| 593 | 593 |
| 594 // This special kind of gap move instruction represents the beginning of a | 594 // This special kind of gap move instruction represents the beginning of a |
| 595 // block of code. | 595 // block of code. |
| 596 // TODO(titzer): move code_start and code_end from BasicBlock to here. | 596 // TODO(titzer): move code_start and code_end from BasicBlock to here. |
| 597 class BlockStartInstruction FINAL : public GapInstruction { | 597 class BlockStartInstruction FINAL : public GapInstruction { |
| 598 public: | 598 public: |
| 599 Label* label() { return &label_; } | 599 Label* label() { return &label_; } |
| 600 BasicBlock::RpoNumber rpo_number() const { return rpo_number_; } | 600 BasicBlock::RpoNumber rpo_number() const { return rpo_number_; } |
| 601 BasicBlock::Id id() const { return id_; } |
| 601 | 602 |
| 602 static BlockStartInstruction* New(Zone* zone, BasicBlock* block) { | 603 static BlockStartInstruction* New(Zone* zone, BasicBlock* block) { |
| 603 void* buffer = zone->New(sizeof(BlockStartInstruction)); | 604 void* buffer = zone->New(sizeof(BlockStartInstruction)); |
| 604 return new (buffer) BlockStartInstruction(block); | 605 return new (buffer) BlockStartInstruction(block); |
| 605 } | 606 } |
| 606 | 607 |
| 607 static BlockStartInstruction* cast(Instruction* instr) { | 608 static BlockStartInstruction* cast(Instruction* instr) { |
| 608 DCHECK(instr->IsBlockStart()); | 609 DCHECK(instr->IsBlockStart()); |
| 609 return static_cast<BlockStartInstruction*>(instr); | 610 return static_cast<BlockStartInstruction*>(instr); |
| 610 } | 611 } |
| 611 | 612 |
| 612 private: | 613 private: |
| 613 explicit BlockStartInstruction(BasicBlock* block) | 614 explicit BlockStartInstruction(BasicBlock* block) |
| 614 : GapInstruction(kBlockStartInstruction), | 615 : GapInstruction(kBlockStartInstruction), |
| 616 id_(block->id()), |
| 615 rpo_number_(block->GetRpoNumber()) {} | 617 rpo_number_(block->GetRpoNumber()) {} |
| 616 | 618 |
| 619 BasicBlock::Id id_; |
| 617 BasicBlock::RpoNumber rpo_number_; | 620 BasicBlock::RpoNumber rpo_number_; |
| 618 Label label_; | 621 Label label_; |
| 619 }; | 622 }; |
| 620 | 623 |
| 621 | 624 |
| 622 class SourcePositionInstruction FINAL : public Instruction { | 625 class SourcePositionInstruction FINAL : public Instruction { |
| 623 public: | 626 public: |
| 624 static SourcePositionInstruction* New(Zone* zone, SourcePosition position) { | 627 static SourcePositionInstruction* New(Zone* zone, SourcePosition position) { |
| 625 void* buffer = zone->New(sizeof(SourcePositionInstruction)); | 628 void* buffer = zone->New(sizeof(SourcePositionInstruction)); |
| 626 return new (buffer) SourcePositionInstruction(position); | 629 return new (buffer) SourcePositionInstruction(position); |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 DeoptimizationVector deoptimization_entries_; | 950 DeoptimizationVector deoptimization_entries_; |
| 948 }; | 951 }; |
| 949 | 952 |
| 950 std::ostream& operator<<(std::ostream& os, const InstructionSequence& code); | 953 std::ostream& operator<<(std::ostream& os, const InstructionSequence& code); |
| 951 | 954 |
| 952 } // namespace compiler | 955 } // namespace compiler |
| 953 } // namespace internal | 956 } // namespace internal |
| 954 } // namespace v8 | 957 } // namespace v8 |
| 955 | 958 |
| 956 #endif // V8_COMPILER_INSTRUCTION_H_ | 959 #endif // V8_COMPILER_INSTRUCTION_H_ |
| OLD | NEW |