diff options
Diffstat (limited to 'deps/v8/src/compiler/graph.cc')
-rw-r--r-- | deps/v8/src/compiler/graph.cc | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/deps/v8/src/compiler/graph.cc b/deps/v8/src/compiler/graph.cc index 995046b74e..193861187b 100644 --- a/deps/v8/src/compiler/graph.cc +++ b/deps/v8/src/compiler/graph.cc @@ -4,14 +4,10 @@ #include "src/compiler/graph.h" -#include "src/compiler/common-operator.h" -#include "src/compiler/graph-inl.h" +#include <algorithm> + +#include "src/base/bits.h" #include "src/compiler/node.h" -#include "src/compiler/node-aux-data-inl.h" -#include "src/compiler/node-properties.h" -#include "src/compiler/node-properties-inl.h" -#include "src/compiler/opcodes.h" -#include "src/compiler/operator-properties.h" namespace v8 { namespace internal { @@ -19,30 +15,46 @@ namespace compiler { Graph::Graph(Zone* zone) : zone_(zone), - start_(NULL), - end_(NULL), + start_(nullptr), + end_(nullptr), mark_max_(0), next_node_id_(0), decorators_(zone) {} -void Graph::Decorate(Node* node) { - for (ZoneVector<GraphDecorator*>::iterator i = decorators_.begin(); - i != decorators_.end(); ++i) { - (*i)->Decorate(node); +void Graph::Decorate(Node* node, bool incomplete) { + for (auto const decorator : decorators_) { + decorator->Decorate(node, incomplete); } } +void Graph::AddDecorator(GraphDecorator* decorator) { + decorators_.push_back(decorator); +} + + +void Graph::RemoveDecorator(GraphDecorator* decorator) { + auto const it = std::find(decorators_.begin(), decorators_.end(), decorator); + DCHECK(it != decorators_.end()); + decorators_.erase(it); +} + + Node* Graph::NewNode(const Operator* op, int input_count, Node** inputs, bool incomplete) { DCHECK_LE(op->ValueInputCount(), input_count); - Node* result = Node::New(this, input_count, inputs, incomplete); - result->Initialize(op); - if (!incomplete) { - Decorate(result); - } - return result; + Node* const node = + Node::New(zone(), NextNodeId(), op, input_count, inputs, incomplete); + Decorate(node, incomplete); + return node; +} + + +NodeId Graph::NextNodeId() { + NodeId const id = next_node_id_; + CHECK(!base::bits::SignedAddOverflow32(id, 1, &next_node_id_)); + return id; } } // namespace compiler |