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