Chromium Code Reviews| Index: src/compiler/schedule.h |
| diff --git a/src/compiler/schedule.h b/src/compiler/schedule.h |
| index 0bba689785728fe9409bdc7fd8edca499cfda020..ffce49fddd8624f0d162162c52604ba99fd4db53 100644 |
| --- a/src/compiler/schedule.h |
| +++ b/src/compiler/schedule.h |
| @@ -6,23 +6,24 @@ |
| #define V8_COMPILER_SCHEDULE_H_ |
| #include <iosfwd> |
| -#include <vector> |
| -#include "src/v8.h" |
| - |
| -#include "src/compiler/node.h" |
| -#include "src/compiler/opcodes.h" |
| -#include "src/zone.h" |
| +#include "src/zone-containers.h" |
| namespace v8 { |
| namespace internal { |
| namespace compiler { |
| +// Forward declarations. |
| class BasicBlock; |
| class BasicBlockInstrumentor; |
| -class Graph; |
| -class ConstructScheduleData; |
| class CodeGenerator; // Because of a namespace bug in clang. |
| +class ConstructScheduleData; |
| +class Node; |
| + |
| + |
| +typedef ZoneVector<BasicBlock*> BasicBlockVector; |
| +typedef ZoneVector<Node*> NodeVector; |
| + |
| // A basic block contains an ordered list of nodes and ends with a control |
| // node. Note that if a basic block has phis, then all phis must appear as the |
| @@ -83,36 +84,26 @@ class BasicBlock FINAL : public ZoneObject { |
| Id id() const { return id_; } |
| - // Predecessors and successors. |
| - typedef ZoneVector<BasicBlock*> Predecessors; |
| - Predecessors::iterator predecessors_begin() { return predecessors_.begin(); } |
| - Predecessors::iterator predecessors_end() { return predecessors_.end(); } |
| - Predecessors::const_iterator predecessors_begin() const { |
| - return predecessors_.begin(); |
| - } |
| - Predecessors::const_iterator predecessors_end() const { |
| - return predecessors_.end(); |
| - } |
| + // Predecessors. |
| + BasicBlockVector& predecessors() { return predecessors_; } |
| + const BasicBlockVector& predecessors() const { return predecessors_; } |
| size_t PredecessorCount() const { return predecessors_.size(); } |
| BasicBlock* PredecessorAt(size_t index) { return predecessors_[index]; } |
| void ClearPredecessors() { predecessors_.clear(); } |
| void AddPredecessor(BasicBlock* predecessor); |
| - typedef ZoneVector<BasicBlock*> Successors; |
| - Successors::iterator successors_begin() { return successors_.begin(); } |
| - Successors::iterator successors_end() { return successors_.end(); } |
| - Successors::const_iterator successors_begin() const { |
| - return successors_.begin(); |
| - } |
| - Successors::const_iterator successors_end() const { |
| - return successors_.end(); |
| - } |
| + // Successors. |
| + BasicBlockVector& successors() { return successors_; } |
| + const BasicBlockVector& successors() const { return successors_; } |
| size_t SuccessorCount() const { return successors_.size(); } |
| BasicBlock* SuccessorAt(size_t index) { return successors_[index]; } |
| void ClearSuccessors() { successors_.clear(); } |
| void AddSuccessor(BasicBlock* successor); |
| // Nodes in the basic block. |
| + typedef Node* value_type; |
|
titzer
2015/01/22 12:18:48
What's this typedef for?
|
| + bool empty() const { return nodes_.empty(); } |
| + size_t size() const { return nodes_.size(); } |
| Node* NodeAt(size_t index) { return nodes_[index]; } |
| size_t NodeCount() const { return nodes_.size(); } |
| @@ -191,20 +182,17 @@ class BasicBlock FINAL : public ZoneObject { |
| Node* control_input_; // Input value for control. |
| NodeVector nodes_; // nodes of this block in forward order. |
| - Successors successors_; |
| - Predecessors predecessors_; |
| + BasicBlockVector successors_; |
| + BasicBlockVector predecessors_; |
| Id id_; |
| DISALLOW_COPY_AND_ASSIGN(BasicBlock); |
| }; |
| -std::ostream& operator<<(std::ostream& os, const BasicBlock::Control& c); |
| -std::ostream& operator<<(std::ostream& os, const BasicBlock::Id& id); |
| -std::ostream& operator<<(std::ostream& os, const BasicBlock::RpoNumber& rpo); |
| +std::ostream& operator<<(std::ostream&, const BasicBlock::Control&); |
| +std::ostream& operator<<(std::ostream&, const BasicBlock::Id&); |
| +std::ostream& operator<<(std::ostream&, const BasicBlock::RpoNumber&); |
| -typedef ZoneVector<BasicBlock*> BasicBlockVector; |
| -typedef BasicBlockVector::iterator BasicBlockVectorIter; |
| -typedef BasicBlockVector::reverse_iterator BasicBlockVectorRIter; |
| // A schedule represents the result of assigning nodes to basic blocks |
| // and ordering them within basic blocks. Prior to computing a schedule, |
| @@ -286,7 +274,7 @@ class Schedule FINAL : public ZoneObject { |
| DISALLOW_COPY_AND_ASSIGN(Schedule); |
| }; |
| -std::ostream& operator<<(std::ostream& os, const Schedule& s); |
| +std::ostream& operator<<(std::ostream&, const Schedule&); |
| } // namespace compiler |
| } // namespace internal |