17d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Copyright 2013 the V8 project authors. All rights reserved.
27d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be
37d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// found in the LICENSE file.
47d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org
57d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/graph.h"
67d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org
77d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/common-operator.h"
87d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/generic-node-inl.h"
97d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/graph-inl.h"
107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/node.h"
117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/node-aux-data-inl.h"
127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/node-properties.h"
137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/node-properties-inl.h"
147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/operator-properties.h"
157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "src/compiler/operator-properties-inl.h"
167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org
177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgnamespace v8 {
187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgnamespace internal {
197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgnamespace compiler {
207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org
21fa7f914e3bacba481b13da5cf2bc4c935567ebc4machenbach@chromium.orgGraph::Graph(Zone* zone) : GenericGraph<Node>(zone), decorators_(zone) {}
227d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org
237d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org
241af4d9551ad496a28c342004b1a4e2a3840228f7machenbach@chromium.orgNode* Graph::NewNode(const Operator* op, int input_count, Node** inputs) {
259aaa825cf89e1bcfece269a453300ebf4a26d64dmachenbach@chromium.org  DCHECK_LE(op->InputCount(), input_count);
267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org  Node* result = Node::New(this, input_count, inputs);
277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org  result->Initialize(op);
28fa7f914e3bacba481b13da5cf2bc4c935567ebc4machenbach@chromium.org  for (ZoneVector<GraphDecorator*>::iterator i = decorators_.begin();
297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org       i != decorators_.end(); ++i) {
307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org    (*i)->Decorate(result);
317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org  }
327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org  return result;
337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org}
347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org
351af4d9551ad496a28c342004b1a4e2a3840228f7machenbach@chromium.org}  // namespace compiler
361af4d9551ad496a28c342004b1a4e2a3840228f7machenbach@chromium.org}  // namespace internal
371af4d9551ad496a28c342004b1a4e2a3840228f7machenbach@chromium.org}  // namespace v8
38