Revision: 24915
Author:   [email protected]
Date:     Mon Oct 27 20:36:56 2014 UTC
Log:      [turbofan] Merge GenericNode with Node.

BUG=
[email protected]

Review URL: https://codereview.chromium.org/676353002
https://code.google.com/p/v8/source/detail?r=24915

Deleted:
 /branches/bleeding_edge/src/compiler/generic-node-inl.h
 /branches/bleeding_edge/src/compiler/generic-node.h
Modified:
 /branches/bleeding_edge/BUILD.gn
 /branches/bleeding_edge/src/compiler/generic-algorithm-inl.h
 /branches/bleeding_edge/src/compiler/generic-algorithm.h
 /branches/bleeding_edge/src/compiler/generic-graph.h
 /branches/bleeding_edge/src/compiler/graph-builder.cc
 /branches/bleeding_edge/src/compiler/graph-visualizer.cc
 /branches/bleeding_edge/src/compiler/graph.cc
 /branches/bleeding_edge/src/compiler/instruction-selector-impl.h
 /branches/bleeding_edge/src/compiler/instruction.cc
 /branches/bleeding_edge/src/compiler/js-context-specialization.cc
 /branches/bleeding_edge/src/compiler/js-inlining.cc
 /branches/bleeding_edge/src/compiler/js-intrinsic-builder.cc
 /branches/bleeding_edge/src/compiler/machine-operator-reducer.cc
 /branches/bleeding_edge/src/compiler/node-cache.cc
 /branches/bleeding_edge/src/compiler/node-matchers.cc
 /branches/bleeding_edge/src/compiler/node-properties-inl.h
 /branches/bleeding_edge/src/compiler/node.cc
 /branches/bleeding_edge/src/compiler/node.h
 /branches/bleeding_edge/src/compiler/phi-reducer.h
 /branches/bleeding_edge/src/compiler/simplified-operator-reducer.cc
 /branches/bleeding_edge/src/compiler/value-numbering-reducer.cc
 /branches/bleeding_edge/src/compiler/verifier.cc
 /branches/bleeding_edge/src/compiler/x64/instruction-selector-x64.cc
 /branches/bleeding_edge/test/cctest/compiler/codegen-tester.cc
 /branches/bleeding_edge/test/cctest/compiler/test-basic-block-profiler.cc
 /branches/bleeding_edge/test/cctest/compiler/test-branch-combine.cc
 /branches/bleeding_edge/test/cctest/compiler/test-changes-lowering.cc
 /branches/bleeding_edge/test/cctest/compiler/test-graph-reducer.cc
 /branches/bleeding_edge/test/cctest/compiler/test-linkage.cc
 /branches/bleeding_edge/test/cctest/compiler/test-node-algorithm.cc
 /branches/bleeding_edge/test/cctest/compiler/test-node.cc
 /branches/bleeding_edge/test/cctest/compiler/test-run-machops.cc
 /branches/bleeding_edge/test/cctest/compiler/test-schedule.cc
 /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc
 /branches/bleeding_edge/test/cctest/compiler/test-simplified-lowering.cc
 /branches/bleeding_edge/tools/gyp/v8.gyp

=======================================
--- /branches/bleeding_edge/src/compiler/generic-node-inl.h Mon Oct 27 10:29:52 2014 UTC
+++ /dev/null
@@ -1,267 +0,0 @@
-// 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.
-
-#ifndef V8_COMPILER_GENERIC_NODE_INL_H_
-#define V8_COMPILER_GENERIC_NODE_INL_H_
-
-#include "src/v8.h"
-
-#include "src/compiler/generic-graph.h"
-#include "src/compiler/generic-node.h"
-#include "src/zone.h"
-
-namespace v8 {
-namespace internal {
-namespace compiler {
-
-template <class B, class S>
-GenericNode<B, S>::GenericNode(GenericGraphBase* graph, int input_count,
-                               int reserve_input_count)
-    : BaseClass(graph->zone()),
-      input_count_(input_count),
-      reserve_input_count_(reserve_input_count),
-      has_appendable_inputs_(false),
-      use_count_(0),
-      first_use_(NULL),
-      last_use_(NULL) {
-  DCHECK(reserve_input_count <= kMaxReservedInputs);
-  inputs_.static_ = reinterpret_cast<Input*>(this + 1);
-  AssignUniqueID(graph);
-}
-
-template <class B, class S>
-inline void GenericNode<B, S>::AssignUniqueID(GenericGraphBase* graph) {
-  id_ = graph->NextNodeID();
-}
-
-template <class B, class S>
-inline typename GenericNode<B, S>::Inputs::iterator
-GenericNode<B, S>::Inputs::begin() {
-  return typename GenericNode<B, S>::Inputs::iterator(this->node_, 0);
-}
-
-template <class B, class S>
-inline typename GenericNode<B, S>::Inputs::iterator
-GenericNode<B, S>::Inputs::end() {
-  return typename GenericNode<B, S>::Inputs::iterator(
-      this->node_, this->node_->InputCount());
-}
-
-template <class B, class S>
-inline typename GenericNode<B, S>::Uses::iterator
-GenericNode<B, S>::Uses::begin() {
-  return typename GenericNode<B, S>::Uses::iterator(this->node_);
-}
-
-template <class B, class S>
-inline typename GenericNode<B, S>::Uses::iterator
-GenericNode<B, S>::Uses::end() {
-  return typename GenericNode<B, S>::Uses::iterator();
-}
-
-template <class B, class S>
-void GenericNode<B, S>::ReplaceUses(GenericNode* replace_to) {
-  for (Use* use = first_use_; use != NULL; use = use->next) {
-    use->from->GetInputRecordPtr(use->input_index)->to = replace_to;
-  }
-  if (replace_to->last_use_ == NULL) {
-    DCHECK_EQ(NULL, replace_to->first_use_);
-    replace_to->first_use_ = first_use_;
-    replace_to->last_use_ = last_use_;
-  } else if (first_use_ != NULL) {
-    DCHECK_NE(NULL, replace_to->first_use_);
-    replace_to->last_use_->next = first_use_;
-    first_use_->prev = replace_to->last_use_;
-    replace_to->last_use_ = last_use_;
-  }
-  replace_to->use_count_ += use_count_;
-  use_count_ = 0;
-  first_use_ = NULL;
-  last_use_ = NULL;
-}
-
-template <class B, class S>
-template <class UnaryPredicate>
-void GenericNode<B, S>::ReplaceUsesIf(UnaryPredicate pred,
-                                      GenericNode* replace_to) {
-  for (Use* use = first_use_; use != NULL;) {
-    Use* next = use->next;
-    if (pred(static_cast<S*>(use->from))) {
-      RemoveUse(use);
-      replace_to->AppendUse(use);
-      use->from->GetInputRecordPtr(use->input_index)->to = replace_to;
-    }
-    use = next;
-  }
-}
-
-template <class B, class S>
-void GenericNode<B, S>::RemoveAllInputs() {
- for (typename Inputs::iterator iter(inputs().begin()); iter != inputs().end();
-       ++iter) {
-    iter.GetInput()->Update(NULL);
-  }
-}
-
-template <class B, class S>
-void GenericNode<B, S>::TrimInputCount(int new_input_count) {
-  if (new_input_count == input_count_) return;  // Nothing to do.
-
-  DCHECK(new_input_count < input_count_);
-
-  // Update inline inputs.
-  for (int i = new_input_count; i < input_count_; i++) {
-    typename GenericNode<B, S>::Input* input = GetInputRecordPtr(i);
-    input->Update(NULL);
-  }
-  input_count_ = new_input_count;
-}
-
-template <class B, class S>
-void GenericNode<B, S>::ReplaceInput(int index, GenericNode<B, S>* new_to) {
-  Input* input = GetInputRecordPtr(index);
-  input->Update(new_to);
-}
-
-template <class B, class S>
-void GenericNode<B, S>::Input::Update(GenericNode<B, S>* new_to) {
-  GenericNode* old_to = this->to;
-  if (new_to == old_to) return;  // Nothing to do.
-  // Snip out the use from where it used to be
-  if (old_to != NULL) {
-    old_to->RemoveUse(use);
-  }
-  to = new_to;
-  // And put it into the new node's use list.
-  if (new_to != NULL) {
-    new_to->AppendUse(use);
-  } else {
-    use->next = NULL;
-    use->prev = NULL;
-  }
-}
-
-template <class B, class S>
-void GenericNode<B, S>::EnsureAppendableInputs(Zone* zone) {
-  if (!has_appendable_inputs_) {
-    void* deque_buffer = zone->New(sizeof(InputDeque));
-    InputDeque* deque = new (deque_buffer) InputDeque(zone);
-    for (int i = 0; i < input_count_; ++i) {
-      deque->push_back(inputs_.static_[i]);
-    }
-    inputs_.appendable_ = deque;
-    has_appendable_inputs_ = true;
-  }
-}
-
-template <class B, class S>
-void GenericNode<B, S>::AppendInput(Zone* zone, GenericNode<B, S>* to_append) {
-  Use* new_use = new (zone) Use;
-  Input new_input;
-  new_input.to = to_append;
-  new_input.use = new_use;
-  if (reserve_input_count_ > 0) {
-    DCHECK(!has_appendable_inputs_);
-    reserve_input_count_--;
-    inputs_.static_[input_count_] = new_input;
-  } else {
-    EnsureAppendableInputs(zone);
-    inputs_.appendable_->push_back(new_input);
-  }
-  new_use->input_index = input_count_;
-  new_use->from = this;
-  to_append->AppendUse(new_use);
-  input_count_++;
-}
-
-template <class B, class S>
-void GenericNode<B, S>::InsertInput(Zone* zone, int index,
-                                    GenericNode<B, S>* to_insert) {
-  DCHECK(index >= 0 && index < InputCount());
-  // TODO(turbofan): Optimize this implementation!
-  AppendInput(zone, InputAt(InputCount() - 1));
-  for (int i = InputCount() - 1; i > index; --i) {
-    ReplaceInput(i, InputAt(i - 1));
-  }
-  ReplaceInput(index, to_insert);
-}
-
-template <class B, class S>
-void GenericNode<B, S>::RemoveInput(int index) {
-  DCHECK(index >= 0 && index < InputCount());
-  // TODO(turbofan): Optimize this implementation!
-  for (; index < InputCount() - 1; ++index) {
-    ReplaceInput(index, InputAt(index + 1));
-  }
-  TrimInputCount(InputCount() - 1);
-}
-
-template <class B, class S>
-void GenericNode<B, S>::AppendUse(Use* use) {
-  use->next = NULL;
-  use->prev = last_use_;
-  if (last_use_ == NULL) {
-    first_use_ = use;
-  } else {
-    last_use_->next = use;
-  }
-  last_use_ = use;
-  ++use_count_;
-}
-
-template <class B, class S>
-void GenericNode<B, S>::RemoveUse(Use* use) {
-  if (last_use_ == use) {
-    last_use_ = use->prev;
-  }
-  if (use->prev != NULL) {
-    use->prev->next = use->next;
-  } else {
-    first_use_ = use->next;
-  }
-  if (use->next != NULL) {
-    use->next->prev = use->prev;
-  }
-  --use_count_;
-}
-
-template <class B, class S>
-inline bool GenericNode<B, S>::OwnedBy(GenericNode* owner) const {
-  return first_use_ != NULL && first_use_->from == owner &&
-         first_use_->next == NULL;
-}
-
-template <class B, class S>
-S* GenericNode<B, S>::New(GenericGraphBase* graph, int input_count, S** inputs,
-                          bool has_extensible_inputs) {
-  size_t node_size = sizeof(GenericNode);
- int reserve_input_count = has_extensible_inputs ? kDefaultReservedInputs : 0;
-  size_t inputs_size = (input_count + reserve_input_count) * sizeof(Input);
-  size_t uses_size = input_count * sizeof(Use);
-  int size = static_cast<int>(node_size + inputs_size + uses_size);
-  Zone* zone = graph->zone();
-  void* buffer = zone->New(size);
-  S* result = new (buffer) S(graph, input_count, reserve_input_count);
-  Input* input =
- reinterpret_cast<Input*>(reinterpret_cast<char*>(buffer) + node_size);
-  Use* use =
-      reinterpret_cast<Use*>(reinterpret_cast<char*>(input) + inputs_size);
-
-  for (int current = 0; current < input_count; ++current) {
-    GenericNode* to = *inputs++;
-    input->to = to;
-    input->use = use;
-    use->input_index = current;
-    use->from = result;
-    to->AppendUse(use);
-    ++use;
-    ++input;
-  }
-  return result;
-}
-}
-}
-}  // namespace v8::internal::compiler
-
-#endif  // V8_COMPILER_GENERIC_NODE_INL_H_
=======================================
--- /branches/bleeding_edge/src/compiler/generic-node.h Mon Oct 27 10:12:16 2014 UTC
+++ /dev/null
@@ -1,279 +0,0 @@
-// 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.
-
-#ifndef V8_COMPILER_GENERIC_NODE_H_
-#define V8_COMPILER_GENERIC_NODE_H_
-
-#include "src/v8.h"
-
-#include "src/zone-containers.h"
-
-namespace v8 {
-namespace internal {
-namespace compiler {
-
-class GenericGraphBase;
-
-typedef int NodeId;
-
-// A GenericNode<> is the basic primitive of graphs. GenericNode's are
-// chained together by input/use chains but by default otherwise contain only an -// identifying number which specific applications of graphs and nodes can use
-// to index auxiliary out-of-line data, especially transient data.
-// Specializations of the templatized GenericNode<> class must provide a base
-// class B that contains all of the members to be made available in each
-// specialized Node instance. GenericNode uses a mixin template pattern to
-// ensure that common accessors and methods expect the derived class S type
-// rather than the GenericNode<B, S> type.
-template <class B, class S>
-class GenericNode : public B {
- public:
-  typedef B BaseClass;
-  typedef S DerivedClass;
-
-  inline NodeId id() const { return id_; }
-
-  int InputCount() const { return input_count_; }
-  S* InputAt(int index) const {
-    return static_cast<S*>(GetInputRecordPtr(index)->to);
-  }
-  inline void ReplaceInput(int index, GenericNode* new_input);
-  inline void AppendInput(Zone* zone, GenericNode* new_input);
-  inline void InsertInput(Zone* zone, int index, GenericNode* new_input);
-  inline void RemoveInput(int index);
-
-  int UseCount() { return use_count_; }
-  S* UseAt(int index) {
-    DCHECK(index < use_count_);
-    Use* current = first_use_;
-    while (index-- != 0) {
-      current = current->next;
-    }
-    return static_cast<S*>(current->from);
-  }
-  inline void ReplaceUses(GenericNode* replace_to);
-  template <class UnaryPredicate>
-  inline void ReplaceUsesIf(UnaryPredicate pred, GenericNode* replace_to);
-  inline void RemoveAllInputs();
-
-  inline void TrimInputCount(int input_count);
-
-  class Inputs {
-   public:
-    class iterator;
-    iterator begin();
-    iterator end();
-
-    explicit Inputs(GenericNode* node) : node_(node) {}
-
-   private:
-    GenericNode* node_;
-  };
-
-  Inputs inputs() { return Inputs(this); }
-
-  class Uses {
-   public:
-    class iterator;
-    iterator begin();
-    iterator end();
-    bool empty() { return begin() == end(); }
-
-    explicit Uses(GenericNode* node) : node_(node) {}
-
-   private:
-    GenericNode* node_;
-  };
-
-  Uses uses() { return Uses(this); }
-
-  class Edge;
-
-  bool OwnedBy(GenericNode* owner) const;
-
-  static S* New(GenericGraphBase* graph, int input_count, S** inputs,
-                bool has_extensible_inputs);
-
- protected:
-  friend class GenericGraphBase;
-
-  class Use : public ZoneObject {
-   public:
-    GenericNode* from;
-    Use* next;
-    Use* prev;
-    int input_index;
-  };
-
-  class Input {
-   public:
-    GenericNode* to;
-    Use* use;
-
-    void Update(GenericNode* new_to);
-  };
-
-  void EnsureAppendableInputs(Zone* zone);
-
-  Input* GetInputRecordPtr(int index) const {
-    if (has_appendable_inputs_) {
-      return &((*inputs_.appendable_)[index]);
-    } else {
-      return inputs_.static_ + index;
-    }
-  }
-
-  inline void AppendUse(Use* use);
-  inline void RemoveUse(Use* use);
-
-  void* operator new(size_t, void* location) { return location; }
-
-  GenericNode(GenericGraphBase* graph, int input_count,
-              int reserved_input_count);
-
- private:
-  void AssignUniqueID(GenericGraphBase* graph);
-
-  typedef ZoneDeque<Input> InputDeque;
-
-  static const int kReservedInputCountBits = 2;
-  static const int kMaxReservedInputs = (1 << kReservedInputCountBits) - 1;
-  static const int kDefaultReservedInputs = kMaxReservedInputs;
-
-  NodeId id_;
-  int input_count_ : 29;
-  unsigned int reserve_input_count_ : kReservedInputCountBits;
-  bool has_appendable_inputs_ : 1;
-  union {
- // When a node is initially allocated, it uses a static buffer to hold its - // inputs under the assumption that the number of outputs will not increase. - // When the first input is appended, the static buffer is converted into a
-    // deque to allow for space-efficient growing.
-    Input* static_;
-    InputDeque* appendable_;
-  } inputs_;
-  int use_count_;
-  Use* first_use_;
-  Use* last_use_;
-
-  DISALLOW_COPY_AND_ASSIGN(GenericNode);
-};
-
-// An encapsulation for information associated with a single use of node as a
-// input from another node, allowing access to both the defining node and
-// the ndoe having the input.
-template <class B, class S>
-class GenericNode<B, S>::Edge {
- public:
-  S* from() const { return static_cast<S*>(input_->use->from); }
-  S* to() const { return static_cast<S*>(input_->to); }
-  int index() const {
-    int index = input_->use->input_index;
-    DCHECK(index < input_->use->from->input_count_);
-    return index;
-  }
-
- private:
-  friend class GenericNode<B, S>::Uses::iterator;
-  friend class GenericNode<B, S>::Inputs::iterator;
-
- explicit Edge(typename GenericNode<B, S>::Input* input) : input_(input) {}
-
-  typename GenericNode<B, S>::Input* input_;
-};
-
-// A forward iterator to visit the nodes which are depended upon by a node
-// in the order of input.
-template <class B, class S>
-class GenericNode<B, S>::Inputs::iterator {
- public:
- iterator(const typename GenericNode<B, S>::Inputs::iterator& other) // NOLINT
-      : node_(other.node_),
-        index_(other.index_) {}
-
-  S* operator*() { return static_cast<S*>(GetInput()->to); }
-  typename GenericNode<B, S>::Edge edge() {
-    return typename GenericNode::Edge(GetInput());
-  }
-  bool operator==(const iterator& other) const {
-    return other.index_ == index_ && other.node_ == node_;
-  }
- bool operator!=(const iterator& other) const { return !(other == *this); }
-  iterator& operator++() {
-    DCHECK(node_ != NULL);
-    DCHECK(index_ < node_->input_count_);
-    ++index_;
-    return *this;
-  }
-  iterator& UpdateToAndIncrement(GenericNode<B, S>* new_to) {
-    typename GenericNode<B, S>::Input* input = GetInput();
-    input->Update(new_to);
-    index_++;
-    return *this;
-  }
-  int index() { return index_; }
-
- private:
-  friend class GenericNode;
-
-  explicit iterator(GenericNode* node, int index)
-      : node_(node), index_(index) {}
-
-  Input* GetInput() const { return node_->GetInputRecordPtr(index_); }
-
-  GenericNode* node_;
-  int index_;
-};
-
-// A forward iterator to visit the uses of a node. The uses are returned in
-// the order in which they were added as inputs.
-template <class B, class S>
-class GenericNode<B, S>::Uses::iterator {
- public:
- iterator(const typename GenericNode<B, S>::Uses::iterator& other) // NOLINT
-      : current_(other.current_),
-        index_(other.index_) {}
-
-  S* operator*() { return static_cast<S*>(current_->from); }
-  typename GenericNode<B, S>::Edge edge() {
-    return typename GenericNode::Edge(CurrentInput());
-  }
-
- bool operator==(const iterator& other) { return other.current_ == current_; } - bool operator!=(const iterator& other) { return other.current_ != current_; }
-  iterator& operator++() {
-    DCHECK(current_ != NULL);
-    index_++;
-    current_ = current_->next;
-    return *this;
-  }
-  iterator& UpdateToAndIncrement(GenericNode<B, S>* new_to) {
-    DCHECK(current_ != NULL);
-    index_++;
-    typename GenericNode<B, S>::Input* input = CurrentInput();
-    current_ = current_->next;
-    input->Update(new_to);
-    return *this;
-  }
-  int index() const { return index_; }
-
- private:
-  friend class GenericNode<B, S>::Uses;
-
-  iterator() : current_(NULL), index_(0) {}
-  explicit iterator(GenericNode<B, S>* node)
-      : current_(node->first_use_), index_(0) {}
-
-  Input* CurrentInput() const {
-    return current_->from->GetInputRecordPtr(current_->input_index);
-  }
-
-  typename GenericNode<B, S>::Use* current_;
-  int index_;
-};
-}
-}
-}  // namespace v8::internal::compiler
-
-#endif  // V8_COMPILER_GENERIC_NODE_H_
=======================================
--- /branches/bleeding_edge/BUILD.gn    Thu Oct 23 09:14:35 2014 UTC
+++ /branches/bleeding_edge/BUILD.gn    Mon Oct 27 20:36:56 2014 UTC
@@ -500,8 +500,6 @@
     "src/compiler/generic-algorithm-inl.h",
     "src/compiler/generic-algorithm.h",
     "src/compiler/generic-graph.h",
-    "src/compiler/generic-node-inl.h",
-    "src/compiler/generic-node.h",
     "src/compiler/graph-builder.cc",
     "src/compiler/graph-builder.h",
     "src/compiler/graph-inl.h",
=======================================
--- /branches/bleeding_edge/src/compiler/generic-algorithm-inl.h Wed Jul 30 13:54:45 2014 UTC +++ /branches/bleeding_edge/src/compiler/generic-algorithm-inl.h Mon Oct 27 20:36:56 2014 UTC
@@ -9,8 +9,6 @@

 #include "src/compiler/generic-algorithm.h"
 #include "src/compiler/generic-graph.h"
-#include "src/compiler/generic-node.h"
-#include "src/compiler/generic-node-inl.h"

 namespace v8 {
 namespace internal {
=======================================
--- /branches/bleeding_edge/src/compiler/generic-algorithm.h Thu Aug 28 09:20:49 2014 UTC +++ /branches/bleeding_edge/src/compiler/generic-algorithm.h Mon Oct 27 20:36:56 2014 UTC
@@ -8,7 +8,6 @@
 #include <stack>

 #include "src/compiler/generic-graph.h"
-#include "src/compiler/generic-node.h"
 #include "src/zone-containers.h"

 namespace v8 {
@@ -99,12 +98,12 @@
     Visit<Visitor, Traits>(graph, zone, &array[0], &array[1], visitor);
   }

-  template <class B, class S>
+  template <class Node>
   struct NullNodeVisitor {
-    Control Pre(GenericNode<B, S>* node) { return CONTINUE; }
-    Control Post(GenericNode<B, S>* node) { return CONTINUE; }
- void PreEdge(GenericNode<B, S>* from, int index, GenericNode<B, S>* to) {} - void PostEdge(GenericNode<B, S>* from, int index, GenericNode<B, S>* to) {}
+    Control Pre(Node* node) { return CONTINUE; }
+    Control Post(Node* node) { return CONTINUE; }
+    void PreEdge(Node* from, int index, Node* to) {}
+    void PostEdge(Node* from, int index, Node* to) {}
   };

  private:
=======================================
--- /branches/bleeding_edge/src/compiler/generic-graph.h Fri Sep 12 11:06:37 2014 UTC +++ /branches/bleeding_edge/src/compiler/generic-graph.h Mon Oct 27 20:36:56 2014 UTC
@@ -5,14 +5,13 @@
 #ifndef V8_COMPILER_GENERIC_GRAPH_H_
 #define V8_COMPILER_GENERIC_GRAPH_H_

-#include "src/compiler/generic-node.h"
+#include "src/zone.h"

 namespace v8 {
 namespace internal {
+namespace compiler {

-class Zone;
-
-namespace compiler {
+typedef int NodeId;

 class GenericGraphBase : public ZoneObject {
  public:
=======================================
--- /branches/bleeding_edge/src/compiler/graph-builder.cc Mon Oct 27 10:12:16 2014 UTC +++ /branches/bleeding_edge/src/compiler/graph-builder.cc Mon Oct 27 20:36:56 2014 UTC
@@ -6,8 +6,6 @@

 #include "src/compiler.h"
 #include "src/compiler/generic-graph.h"
-#include "src/compiler/generic-node.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph-visualizer.h"
 #include "src/compiler/node-properties.h"
 #include "src/compiler/node-properties-inl.h"
=======================================
--- /branches/bleeding_edge/src/compiler/graph-visualizer.cc Mon Oct 27 12:57:50 2014 UTC +++ /branches/bleeding_edge/src/compiler/graph-visualizer.cc Mon Oct 27 20:36:56 2014 UTC
@@ -8,8 +8,6 @@
 #include <string>

 #include "src/compiler/generic-algorithm.h"
-#include "src/compiler/generic-node.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph.h"
 #include "src/compiler/graph-inl.h"
 #include "src/compiler/node.h"
=======================================
--- /branches/bleeding_edge/src/compiler/graph.cc Mon Oct 27 10:12:16 2014 UTC +++ /branches/bleeding_edge/src/compiler/graph.cc Mon Oct 27 20:36:56 2014 UTC
@@ -5,7 +5,6 @@
 #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"
=======================================
--- /branches/bleeding_edge/src/compiler/instruction-selector-impl.h Sun Oct 26 10:24:49 2014 UTC +++ /branches/bleeding_edge/src/compiler/instruction-selector-impl.h Mon Oct 27 20:36:56 2014 UTC
@@ -5,7 +5,6 @@
 #ifndef V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_
 #define V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_

-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/instruction.h"
 #include "src/compiler/instruction-selector.h"
 #include "src/compiler/linkage.h"
=======================================
--- /branches/bleeding_edge/src/compiler/instruction.cc Wed Oct 22 11:24:55 2014 UTC +++ /branches/bleeding_edge/src/compiler/instruction.cc Mon Oct 27 20:36:56 2014 UTC
@@ -5,7 +5,6 @@
 #include "src/compiler/instruction.h"

 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph.h"

 namespace v8 {
=======================================
--- /branches/bleeding_edge/src/compiler/js-context-specialization.cc Tue Sep 30 10:42:44 2014 UTC +++ /branches/bleeding_edge/src/compiler/js-context-specialization.cc Mon Oct 27 20:36:56 2014 UTC
@@ -3,7 +3,6 @@
 // found in the LICENSE file.

 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph-inl.h"
 #include "src/compiler/js-context-specialization.h"
 #include "src/compiler/js-operator.h"
=======================================
--- /branches/bleeding_edge/src/compiler/js-inlining.cc Mon Oct 27 16:25:11 2014 UTC +++ /branches/bleeding_edge/src/compiler/js-inlining.cc Mon Oct 27 20:36:56 2014 UTC
@@ -7,7 +7,6 @@
 #include "src/compiler/access-builder.h"
 #include "src/compiler/ast-graph-builder.h"
 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph-inl.h"
 #include "src/compiler/graph-visualizer.h"
 #include "src/compiler/js-inlining.h"
=======================================
--- /branches/bleeding_edge/src/compiler/js-intrinsic-builder.cc Mon Oct 20 07:56:50 2014 UTC +++ /branches/bleeding_edge/src/compiler/js-intrinsic-builder.cc Mon Oct 27 20:36:56 2014 UTC
@@ -4,7 +4,6 @@

 #include "src/compiler/access-builder.h"
 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/js-intrinsic-builder.h"
 #include "src/compiler/js-operator.h"
 #include "src/compiler/simplified-operator.h"
=======================================
--- /branches/bleeding_edge/src/compiler/machine-operator-reducer.cc Sun Oct 26 12:49:56 2014 UTC +++ /branches/bleeding_edge/src/compiler/machine-operator-reducer.cc Mon Oct 27 20:36:56 2014 UTC
@@ -7,7 +7,6 @@
 #include "src/base/bits.h"
 #include "src/base/division-by-constant.h"
 #include "src/codegen.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph.h"
 #include "src/compiler/js-graph.h"
 #include "src/compiler/node-matchers.h"
=======================================
--- /branches/bleeding_edge/src/compiler/node-cache.cc Wed Oct 15 13:07:18 2014 UTC +++ /branches/bleeding_edge/src/compiler/node-cache.cc Mon Oct 27 20:36:56 2014 UTC
@@ -2,9 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.

-#include "src/compiler/node-cache.h"
+#include <cstring>

-#include <cstring>
+#include "src/v8.h"
+
+#include "src/compiler/node-cache.h"

 #include "src/zone.h"
 #include "src/zone-containers.h"
=======================================
--- /branches/bleeding_edge/src/compiler/node-matchers.cc Tue Sep 30 09:46:30 2014 UTC +++ /branches/bleeding_edge/src/compiler/node-matchers.cc Mon Oct 27 20:36:56 2014 UTC
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.

-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/node-matchers.h"

 namespace v8 {
=======================================
--- /branches/bleeding_edge/src/compiler/node-properties-inl.h Wed Oct 15 11:38:04 2014 UTC +++ /branches/bleeding_edge/src/compiler/node-properties-inl.h Mon Oct 27 20:36:56 2014 UTC
@@ -8,7 +8,6 @@
 #include "src/v8.h"

 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/node-properties.h"
 #include "src/compiler/opcodes.h"
 #include "src/compiler/operator.h"
=======================================
--- /branches/bleeding_edge/src/compiler/node.cc Tue Oct 7 13:30:28 2014 UTC +++ /branches/bleeding_edge/src/compiler/node.cc Mon Oct 27 20:36:56 2014 UTC
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.

+#include "src/v8.h"
+
 #include "src/compiler/node.h"

-#include "src/compiler/generic-node-inl.h"
-
 namespace v8 {
 namespace internal {
 namespace compiler {
@@ -15,6 +15,19 @@
   RemoveAllInputs();
   DCHECK(uses().empty());
 }
+
+
+Node::Node(GenericGraphBase* graph, int input_count, int reserve_input_count)
+    : input_count_(input_count),
+      reserve_input_count_(reserve_input_count),
+      has_appendable_inputs_(false),
+      use_count_(0),
+      first_use_(NULL),
+      last_use_(NULL) {
+  DCHECK(reserve_input_count <= kMaxReservedInputs);
+  inputs_.static_ = reinterpret_cast<Input*>(this + 1);
+  AssignUniqueID(graph);
+}


 void Node::CollectProjections(NodeVector* projections) {
@@ -40,6 +53,217 @@
   }
   return NULL;
 }
+
+
+void Node::AssignUniqueID(GenericGraphBase* graph) {
+  id_ = graph->NextNodeID();
+}
+
+
+Node::Inputs::iterator Node::Inputs::begin() {
+  return Node::Inputs::iterator(this->node_, 0);
+}
+
+
+Node::Inputs::iterator Node::Inputs::end() {
+  return Node::Inputs::iterator(this->node_, this->node_->InputCount());
+}
+
+
+Node::Uses::iterator Node::Uses::begin() {
+  return Node::Uses::iterator(this->node_);
+}
+
+
+Node::Uses::iterator Node::Uses::end() { return Node::Uses::iterator(); }
+
+
+void Node::ReplaceUses(Node* replace_to) {
+  for (Use* use = first_use_; use != NULL; use = use->next) {
+    use->from->GetInputRecordPtr(use->input_index)->to = replace_to;
+  }
+  if (replace_to->last_use_ == NULL) {
+    DCHECK_EQ(NULL, replace_to->first_use_);
+    replace_to->first_use_ = first_use_;
+    replace_to->last_use_ = last_use_;
+  } else if (first_use_ != NULL) {
+    DCHECK_NE(NULL, replace_to->first_use_);
+    replace_to->last_use_->next = first_use_;
+    first_use_->prev = replace_to->last_use_;
+    replace_to->last_use_ = last_use_;
+  }
+  replace_to->use_count_ += use_count_;
+  use_count_ = 0;
+  first_use_ = NULL;
+  last_use_ = NULL;
+}
+
+
+void Node::RemoveAllInputs() {
+  for (Inputs::iterator iter(inputs().begin()); iter != inputs().end();
+       ++iter) {
+    iter.GetInput()->Update(NULL);
+  }
+}
+
+
+void Node::TrimInputCount(int new_input_count) {
+  if (new_input_count == input_count_) return;  // Nothing to do.
+
+  DCHECK(new_input_count < input_count_);
+
+  // Update inline inputs.
+  for (int i = new_input_count; i < input_count_; i++) {
+    Node::Input* input = GetInputRecordPtr(i);
+    input->Update(NULL);
+  }
+  input_count_ = new_input_count;
+}
+
+
+void Node::ReplaceInput(int index, Node* new_to) {
+  Input* input = GetInputRecordPtr(index);
+  input->Update(new_to);
+}
+
+
+void Node::Input::Update(Node* new_to) {
+  Node* old_to = this->to;
+  if (new_to == old_to) return;  // Nothing to do.
+  // Snip out the use from where it used to be
+  if (old_to != NULL) {
+    old_to->RemoveUse(use);
+  }
+  to = new_to;
+  // And put it into the new node's use list.
+  if (new_to != NULL) {
+    new_to->AppendUse(use);
+  } else {
+    use->next = NULL;
+    use->prev = NULL;
+  }
+}
+
+
+void Node::EnsureAppendableInputs(Zone* zone) {
+  if (!has_appendable_inputs_) {
+    void* deque_buffer = zone->New(sizeof(InputDeque));
+    InputDeque* deque = new (deque_buffer) InputDeque(zone);
+    for (int i = 0; i < input_count_; ++i) {
+      deque->push_back(inputs_.static_[i]);
+    }
+    inputs_.appendable_ = deque;
+    has_appendable_inputs_ = true;
+  }
+}
+
+
+void Node::AppendInput(Zone* zone, Node* to_append) {
+  Use* new_use = new (zone) Use;
+  Input new_input;
+  new_input.to = to_append;
+  new_input.use = new_use;
+  if (reserve_input_count_ > 0) {
+    DCHECK(!has_appendable_inputs_);
+    reserve_input_count_--;
+    inputs_.static_[input_count_] = new_input;
+  } else {
+    EnsureAppendableInputs(zone);
+    inputs_.appendable_->push_back(new_input);
+  }
+  new_use->input_index = input_count_;
+  new_use->from = this;
+  to_append->AppendUse(new_use);
+  input_count_++;
+}
+
+
+void Node::InsertInput(Zone* zone, int index, Node* to_insert) {
+  DCHECK(index >= 0 && index < InputCount());
+  // TODO(turbofan): Optimize this implementation!
+  AppendInput(zone, InputAt(InputCount() - 1));
+  for (int i = InputCount() - 1; i > index; --i) {
+    ReplaceInput(i, InputAt(i - 1));
+  }
+  ReplaceInput(index, to_insert);
+}
+
+
+void Node::RemoveInput(int index) {
+  DCHECK(index >= 0 && index < InputCount());
+  // TODO(turbofan): Optimize this implementation!
+  for (; index < InputCount() - 1; ++index) {
+    ReplaceInput(index, InputAt(index + 1));
+  }
+  TrimInputCount(InputCount() - 1);
+}
+
+
+void Node::AppendUse(Use* use) {
+  use->next = NULL;
+  use->prev = last_use_;
+  if (last_use_ == NULL) {
+    first_use_ = use;
+  } else {
+    last_use_->next = use;
+  }
+  last_use_ = use;
+  ++use_count_;
+}
+
+
+void Node::RemoveUse(Use* use) {
+  if (last_use_ == use) {
+    last_use_ = use->prev;
+  }
+  if (use->prev != NULL) {
+    use->prev->next = use->next;
+  } else {
+    first_use_ = use->next;
+  }
+  if (use->next != NULL) {
+    use->next->prev = use->prev;
+  }
+  --use_count_;
+}
+
+
+bool Node::OwnedBy(Node* owner) const {
+  return first_use_ != NULL && first_use_->from == owner &&
+         first_use_->next == NULL;
+}
+
+
+Node* Node::New(GenericGraphBase* graph, int input_count, Node** inputs,
+                bool has_extensible_inputs) {
+  size_t node_size = sizeof(Node);
+ int reserve_input_count = has_extensible_inputs ? kDefaultReservedInputs : 0;
+  size_t inputs_size = (input_count + reserve_input_count) * sizeof(Input);
+  size_t uses_size = input_count * sizeof(Use);
+  int size = static_cast<int>(node_size + inputs_size + uses_size);
+  Zone* zone = graph->zone();
+  void* buffer = zone->New(size);
+ Node* result = new (buffer) Node(graph, input_count, reserve_input_count);
+  Input* input =
+ reinterpret_cast<Input*>(reinterpret_cast<char*>(buffer) + node_size);
+  Use* use =
+      reinterpret_cast<Use*>(reinterpret_cast<char*>(input) + inputs_size);
+
+  for (int current = 0; current < input_count; ++current) {
+    Node* to = *inputs++;
+    input->to = to;
+    input->use = use;
+    use->input_index = current;
+    use->from = result;
+    to->AppendUse(use);
+    ++use;
+    ++input;
+  }
+  return result;
+}
+
+
+bool Node::Uses::empty() { return begin() == end(); }


 std::ostream& operator<<(std::ostream& os, const Node& n) {
=======================================
--- /branches/bleeding_edge/src/compiler/node.h Mon Oct 27 10:12:16 2014 UTC
+++ /branches/bleeding_edge/src/compiler/node.h Mon Oct 27 20:36:56 2014 UTC
@@ -10,19 +10,34 @@
 #include <vector>

 #include "src/compiler/generic-algorithm.h"
-#include "src/compiler/generic-node.h"
 #include "src/compiler/opcodes.h"
 #include "src/compiler/operator.h"
 #include "src/types.h"
 #include "src/zone.h"
 #include "src/zone-allocator.h"
+#include "src/zone-containers.h"

 namespace v8 {
 namespace internal {
 namespace compiler {

-class NodeData {
+// A Node is the basic primitive of an IR graph. In addition to the graph
+// book-keeping Nodes only contain a mutable Operator that may change
+// during compilation, e.g. during lowering passes.  Other information that
+// needs to be associated with Nodes during compilation must be stored
+// out-of-line indexed by the Node's id.
+class Node FINAL {
  public:
+  Node(GenericGraphBase* graph, int input_count, int reserve_input_count);
+
+  void Initialize(const Operator* op) { set_op(op); }
+
+  bool IsDead() const { return InputCount() > 0 && InputAt(0) == NULL; }
+  void Kill();
+
+  void CollectProjections(ZoneVector<Node*>* projections);
+  Node* FindProjection(size_t projection_index);
+
   const Operator* op() const { return op_; }
   void set_op(const Operator* op) { op_ = op; }

@@ -31,38 +46,258 @@
     return static_cast<IrOpcode::Value>(op_->opcode());
   }

- protected:
+  inline NodeId id() const { return id_; }
+
+  int InputCount() const { return input_count_; }
+  Node* InputAt(int index) const {
+    return static_cast<Node*>(GetInputRecordPtr(index)->to);
+  }
+
+  void ReplaceInput(int index, Node* new_input);
+  void AppendInput(Zone* zone, Node* new_input);
+  void InsertInput(Zone* zone, int index, Node* new_input);
+  void RemoveInput(int index);
+
+  int UseCount() { return use_count_; }
+  Node* UseAt(int index) {
+    DCHECK(index < use_count_);
+    Use* current = first_use_;
+    while (index-- != 0) {
+      current = current->next;
+    }
+    return current->from;
+  }
+  void ReplaceUses(Node* replace_to);
+  template <class UnaryPredicate>
+  inline void ReplaceUsesIf(UnaryPredicate pred, Node* replace_to);
+  void RemoveAllInputs();
+
+  void TrimInputCount(int input_count);
+
+  class Inputs {
+   public:
+    class iterator;
+    iterator begin();
+    iterator end();
+
+    explicit Inputs(Node* node) : node_(node) {}
+
+   private:
+    Node* node_;
+  };
+
+  Inputs inputs() { return Inputs(this); }
+
+  class Uses {
+   public:
+    class iterator;
+    iterator begin();
+    iterator end();
+    bool empty();  // { return begin() == end(); }
+
+    explicit Uses(Node* node) : node_(node) {}
+
+   private:
+    Node* node_;
+  };
+
+  Uses uses() { return Uses(this); }
+
+  class Edge;
+
+  bool OwnedBy(Node* owner) const;
+
+  static Node* New(GenericGraphBase* graph, int input_count, Node** inputs,
+                   bool has_extensible_inputs);
+
+
+ private:
   const Operator* op_;
   Bounds bounds_;
-  explicit NodeData(Zone* zone) {}

   friend class NodeProperties;
   Bounds bounds() { return bounds_; }
   void set_bounds(Bounds b) { bounds_ = b; }
+
+  friend class GenericGraphBase;
+
+  class Use : public ZoneObject {
+   public:
+    Node* from;
+    Use* next;
+    Use* prev;
+    int input_index;
+  };
+
+  class Input {
+   public:
+    Node* to;
+    Use* use;
+
+    void Update(Node* new_to);
+  };
+
+  void EnsureAppendableInputs(Zone* zone);
+
+  Input* GetInputRecordPtr(int index) const {
+    if (has_appendable_inputs_) {
+      return &((*inputs_.appendable_)[index]);
+    } else {
+      return inputs_.static_ + index;
+    }
+  }
+
+  void AppendUse(Use* use);
+  void RemoveUse(Use* use);
+
+  void* operator new(size_t, void* location) { return location; }
+
+  void AssignUniqueID(GenericGraphBase* graph);
+
+  typedef ZoneDeque<Input> InputDeque;
+
+  static const int kReservedInputCountBits = 2;
+  static const int kMaxReservedInputs = (1 << kReservedInputCountBits) - 1;
+  static const int kDefaultReservedInputs = kMaxReservedInputs;
+
+  NodeId id_;
+  int input_count_ : 29;
+  unsigned int reserve_input_count_ : kReservedInputCountBits;
+  bool has_appendable_inputs_ : 1;
+  union {
+ // When a node is initially allocated, it uses a static buffer to hold its + // inputs under the assumption that the number of outputs will not increase. + // When the first input is appended, the static buffer is converted into a
+    // deque to allow for space-efficient growing.
+    Input* static_;
+    InputDeque* appendable_;
+  } inputs_;
+  int use_count_;
+  Use* first_use_;
+  Use* last_use_;
+
+  DISALLOW_COPY_AND_ASSIGN(Node);
 };

-// A Node is the basic primitive of an IR graph. In addition to the members
-// inherited from Vector, Nodes only contain a mutable Operator that may change
-// during compilation, e.g. during lowering passes.  Other information that
-// needs to be associated with Nodes during compilation must be stored
-// out-of-line indexed by the Node's id.
-class Node FINAL : public GenericNode<NodeData, Node> {
+class Node::Edge {
  public:
-  Node(GenericGraphBase* graph, int input_count, int reserve_input_count)
- : GenericNode<NodeData, Node>(graph, input_count, reserve_input_count) {}
+  Node* from() const { return input_->use->from; }
+  Node* to() const { return input_->to; }
+  int index() const {
+    int index = input_->use->input_index;
+    DCHECK(index < input_->use->from->input_count_);
+    return index;
+  }

-  void Initialize(const Operator* op) { set_op(op); }
+ private:
+  friend class Node::Uses::iterator;
+  friend class Node::Inputs::iterator;

-  bool IsDead() const { return InputCount() > 0 && InputAt(0) == NULL; }
-  void Kill();
+  explicit Edge(Node::Input* input) : input_(input) {}

-  void CollectProjections(ZoneVector<Node*>* projections);
-  Node* FindProjection(size_t projection_index);
+  Node::Input* input_;
 };
+
+
+// A forward iterator to visit the nodes which are depended upon by a node
+// in the order of input.
+class Node::Inputs::iterator {
+ public:
+  iterator(const Node::Inputs::iterator& other)  // NOLINT
+      : node_(other.node_),
+        index_(other.index_) {}
+
+  Node* operator*() { return GetInput()->to; }
+  Node::Edge edge() { return Node::Edge(GetInput()); }
+  bool operator==(const iterator& other) const {
+    return other.index_ == index_ && other.node_ == node_;
+  }
+ bool operator!=(const iterator& other) const { return !(other == *this); }
+  iterator& operator++() {
+    DCHECK(node_ != NULL);
+    DCHECK(index_ < node_->input_count_);
+    ++index_;
+    return *this;
+  }
+  iterator& UpdateToAndIncrement(Node* new_to) {
+    Node::Input* input = GetInput();
+    input->Update(new_to);
+    index_++;
+    return *this;
+  }
+  int index() { return index_; }
+
+ private:
+  friend class Node;
+
+  explicit iterator(Node* node, int index) : node_(node), index_(index) {}
+
+  Input* GetInput() const { return node_->GetInputRecordPtr(index_); }
+
+  Node* node_;
+  int index_;
+};
+
+// A forward iterator to visit the uses of a node. The uses are returned in
+// the order in which they were added as inputs.
+class Node::Uses::iterator {
+ public:
+  iterator(const Node::Uses::iterator& other)  // NOLINT
+      : current_(other.current_),
+        index_(other.index_) {}
+
+  Node* operator*() { return current_->from; }
+  Node::Edge edge() { return Node::Edge(CurrentInput()); }
+
+ bool operator==(const iterator& other) { return other.current_ == current_; } + bool operator!=(const iterator& other) { return other.current_ != current_; }
+  iterator& operator++() {
+    DCHECK(current_ != NULL);
+    index_++;
+    current_ = current_->next;
+    return *this;
+  }
+  iterator& UpdateToAndIncrement(Node* new_to) {
+    DCHECK(current_ != NULL);
+    index_++;
+    Node::Input* input = CurrentInput();
+    current_ = current_->next;
+    input->Update(new_to);
+    return *this;
+  }
+  int index() const { return index_; }
+
+ private:
+  friend class Node::Uses;
+
+  iterator() : current_(NULL), index_(0) {}
+  explicit iterator(Node* node) : current_(node->first_use_), index_(0) {}
+
+  Input* CurrentInput() const {
+    return current_->from->GetInputRecordPtr(current_->input_index);
+  }
+
+  Node::Use* current_;
+  int index_;
+};
+
+
+template <class UnaryPredicate>
+inline void Node::ReplaceUsesIf(UnaryPredicate pred, Node* replace_to) {
+  for (Use* use = first_use_; use != NULL;) {
+    Use* next = use->next;
+    if (pred(use->from)) {
+      RemoveUse(use);
+      replace_to->AppendUse(use);
+      use->from->GetInputRecordPtr(use->input_index)->to = replace_to;
+    }
+    use = next;
+  }
+}

 std::ostream& operator<<(std::ostream& os, const Node& n);

-typedef GenericGraphVisit::NullNodeVisitor<NodeData, Node> NullNodeVisitor;
+typedef GenericGraphVisit::NullNodeVisitor<Node> NullNodeVisitor;

 typedef std::set<Node*, std::less<Node*>, zone_allocator<Node*> > NodeSet;
 typedef NodeSet::iterator NodeSetIter;
=======================================
--- /branches/bleeding_edge/src/compiler/phi-reducer.h Tue Sep 30 08:23:20 2014 UTC +++ /branches/bleeding_edge/src/compiler/phi-reducer.h Mon Oct 27 20:36:56 2014 UTC
@@ -5,7 +5,6 @@
 #ifndef V8_COMPILER_PHI_REDUCER_H_
 #define V8_COMPILER_PHI_REDUCER_H_

-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph-reducer.h"

 namespace v8 {
=======================================
--- /branches/bleeding_edge/src/compiler/simplified-operator-reducer.cc Mon Oct 20 06:25:41 2014 UTC +++ /branches/bleeding_edge/src/compiler/simplified-operator-reducer.cc Mon Oct 27 20:36:56 2014 UTC
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.

-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/js-graph.h"
 #include "src/compiler/machine-operator.h"
 #include "src/compiler/node-matchers.h"
=======================================
--- /branches/bleeding_edge/src/compiler/value-numbering-reducer.cc Wed Oct 8 08:06:59 2014 UTC +++ /branches/bleeding_edge/src/compiler/value-numbering-reducer.cc Mon Oct 27 20:36:56 2014 UTC
@@ -2,9 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.

-#include "src/compiler/value-numbering-reducer.h"
+#include <cstring>

-#include <cstring>
+#include "src/v8.h"
+
+#include "src/compiler/value-numbering-reducer.h"

 #include "src/base/functional.h"
 #include "src/compiler/node.h"
=======================================
--- /branches/bleeding_edge/src/compiler/verifier.cc Fri Oct 24 13:06:48 2014 UTC +++ /branches/bleeding_edge/src/compiler/verifier.cc Mon Oct 27 20:36:56 2014 UTC
@@ -10,8 +10,6 @@
 #include <string>

 #include "src/compiler/generic-algorithm.h"
-#include "src/compiler/generic-node-inl.h"
-#include "src/compiler/generic-node.h"
 #include "src/compiler/graph-inl.h"
 #include "src/compiler/graph.h"
 #include "src/compiler/node.h"
=======================================
--- /branches/bleeding_edge/src/compiler/x64/instruction-selector-x64.cc Fri Oct 24 13:06:48 2014 UTC +++ /branches/bleeding_edge/src/compiler/x64/instruction-selector-x64.cc Mon Oct 27 20:36:56 2014 UTC
@@ -2,7 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.

-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/instruction-selector-impl.h"
 #include "src/compiler/node-matchers.h"

=======================================
--- /branches/bleeding_edge/test/cctest/compiler/codegen-tester.cc Tue Oct 7 13:30:28 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/codegen-tester.cc Mon Oct 27 20:36:56 2014 UTC
@@ -4,7 +4,6 @@

 #include "src/v8.h"

-#include "src/compiler/generic-node-inl.h"
 #include "test/cctest/cctest.h"
 #include "test/cctest/compiler/codegen-tester.h"
 #include "test/cctest/compiler/value-helper.h"
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-basic-block-profiler.cc Mon Sep 29 07:48:05 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-basic-block-profiler.cc Mon Oct 27 20:36:56 2014 UTC
@@ -5,7 +5,6 @@
 #include "src/v8.h"

 #include "src/basic-block-profiler.h"
-#include "src/compiler/generic-node-inl.h"
 #include "test/cctest/cctest.h"
 #include "test/cctest/compiler/codegen-tester.h"

=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-branch-combine.cc Mon Sep 29 10:34:21 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-branch-combine.cc Mon Oct 27 20:36:56 2014 UTC
@@ -4,7 +4,6 @@

 #include "src/v8.h"

-#include "src/compiler/generic-node-inl.h"
 #include "test/cctest/cctest.h"
 #include "test/cctest/compiler/codegen-tester.h"
 #include "test/cctest/compiler/value-helper.h"
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-changes-lowering.cc Mon Oct 27 12:39:20 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-changes-lowering.cc Mon Oct 27 20:36:56 2014 UTC
@@ -6,7 +6,6 @@

 #include "src/compiler/change-lowering.h"
 #include "src/compiler/control-builders.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/js-graph.h"
 #include "src/compiler/node-properties-inl.h"
 #include "src/compiler/pipeline.h"
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-graph-reducer.cc Fri Sep 26 06:52:23 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-graph-reducer.cc Mon Oct 27 20:36:56 2014 UTC
@@ -5,7 +5,6 @@
 #include "src/v8.h"

 #include "graph-tester.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph-reducer.h"

 using namespace v8::internal;
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-linkage.cc Mon Oct 27 12:39:20 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-linkage.cc Mon Oct 27 20:36:56 2014 UTC
@@ -8,7 +8,6 @@
 #include "src/zone.h"

 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph.h"
 #include "src/compiler/linkage.h"
 #include "src/compiler/machine-operator.h"
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-node-algorithm.cc Wed Jul 30 16:21:36 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-node-algorithm.cc Mon Oct 27 20:36:56 2014 UTC
@@ -8,8 +8,6 @@

 #include "graph-tester.h"
 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph.h"
 #include "src/compiler/graph-inl.h"
 #include "src/compiler/graph-visualizer.h"
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-node.cc Wed Sep 24 09:28:56 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-node.cc Mon Oct 27 20:36:56 2014 UTC
@@ -7,7 +7,6 @@
 #include "src/v8.h"

 #include "graph-tester.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/node.h"
 #include "src/compiler/operator.h"

=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-run-machops.cc Thu Oct 23 10:22:06 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-run-machops.cc Mon Oct 27 20:36:56 2014 UTC
@@ -6,7 +6,6 @@
 #include <limits>

 #include "src/base/bits.h"
-#include "src/compiler/generic-node-inl.h"
 #include "test/cctest/cctest.h"
 #include "test/cctest/compiler/codegen-tester.h"
 #include "test/cctest/compiler/value-helper.h"
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-schedule.cc Fri Oct 24 13:48:02 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-schedule.cc Mon Oct 27 20:36:56 2014 UTC
@@ -5,7 +5,6 @@
 #include "src/v8.h"

 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph.h"
 #include "src/compiler/machine-operator.h"
 #include "src/compiler/node.h"
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc Fri Oct 24 13:57:32 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-scheduler.cc Mon Oct 27 20:36:56 2014 UTC
@@ -7,8 +7,6 @@

 #include "src/compiler/access-builder.h"
 #include "src/compiler/common-operator.h"
-#include "src/compiler/generic-node-inl.h"
-#include "src/compiler/generic-node.h"
 #include "src/compiler/graph.h"
 #include "src/compiler/graph-visualizer.h"
 #include "src/compiler/js-operator.h"
=======================================
--- /branches/bleeding_edge/test/cctest/compiler/test-simplified-lowering.cc Mon Oct 27 12:39:20 2014 UTC +++ /branches/bleeding_edge/test/cctest/compiler/test-simplified-lowering.cc Mon Oct 27 20:36:56 2014 UTC
@@ -7,7 +7,6 @@
 #include "src/compiler/access-builder.h"
 #include "src/compiler/change-lowering.h"
 #include "src/compiler/control-builders.h"
-#include "src/compiler/generic-node-inl.h"
 #include "src/compiler/graph-reducer.h"
 #include "src/compiler/graph-visualizer.h"
 #include "src/compiler/node-properties-inl.h"
=======================================
--- /branches/bleeding_edge/tools/gyp/v8.gyp    Thu Oct 23 09:14:35 2014 UTC
+++ /branches/bleeding_edge/tools/gyp/v8.gyp    Mon Oct 27 20:36:56 2014 UTC
@@ -413,8 +413,6 @@
         '../../src/compiler/generic-algorithm-inl.h',
         '../../src/compiler/generic-algorithm.h',
         '../../src/compiler/generic-graph.h',
-        '../../src/compiler/generic-node-inl.h',
-        '../../src/compiler/generic-node.h',
         '../../src/compiler/graph-builder.cc',
         '../../src/compiler/graph-builder.h',
         '../../src/compiler/graph-inl.h',

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to