diff options
Diffstat (limited to 'deps/v8/src/compiler/graph.cc')
-rw-r--r-- | deps/v8/src/compiler/graph.cc | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/deps/v8/src/compiler/graph.cc b/deps/v8/src/compiler/graph.cc new file mode 100644 index 000000000..3f47eace8 --- /dev/null +++ b/deps/v8/src/compiler/graph.cc @@ -0,0 +1,54 @@ +// Copyright 2013 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "src/compiler/graph.h" + +#include "src/compiler/common-operator.h" +#include "src/compiler/generic-node-inl.h" +#include "src/compiler/graph-inl.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/operator-properties.h" +#include "src/compiler/operator-properties-inl.h" + +namespace v8 { +namespace internal { +namespace compiler { + +Graph::Graph(Zone* zone) + : GenericGraph<Node>(zone), + decorators_(DecoratorVector::allocator_type(zone)) {} + + +Node* Graph::NewNode(Operator* op, int input_count, Node** inputs) { + DCHECK(op->InputCount() <= input_count); + Node* result = Node::New(this, input_count, inputs); + result->Initialize(op); + for (DecoratorVector::iterator i = decorators_.begin(); + i != decorators_.end(); ++i) { + (*i)->Decorate(result); + } + return result; +} + + +void Graph::ChangeOperator(Node* node, Operator* op) { node->set_op(op); } + + +void Graph::DeleteNode(Node* node) { +#if DEBUG + // Nodes can't be deleted if they have uses. + Node::Uses::iterator use_iterator(node->uses().begin()); + DCHECK(use_iterator == node->uses().end()); +#endif + +#if DEBUG + memset(node, 0xDE, sizeof(Node)); +#endif +} +} +} +} // namespace v8::internal::compiler |