1// Copyright 2013 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef V8_COMPILER_GENERIC_GRAPH_H_ 6#define V8_COMPILER_GENERIC_GRAPH_H_ 7 8#include "src/compiler/generic-node.h" 9 10namespace v8 { 11namespace internal { 12 13class Zone; 14 15namespace compiler { 16 17class GenericGraphBase : public ZoneObject { 18 public: 19 explicit GenericGraphBase(Zone* zone) : zone_(zone), next_node_id_(0) {} 20 21 Zone* zone() const { return zone_; } 22 23 NodeId NextNodeID() { return next_node_id_++; } 24 NodeId NodeCount() const { return next_node_id_; } 25 26 private: 27 Zone* zone_; 28 NodeId next_node_id_; 29}; 30 31template <class V> 32class GenericGraph : public GenericGraphBase { 33 public: 34 explicit GenericGraph(Zone* zone) 35 : GenericGraphBase(zone), start_(NULL), end_(NULL) {} 36 37 V* start() { return start_; } 38 V* end() { return end_; } 39 40 void SetStart(V* start) { start_ = start; } 41 void SetEnd(V* end) { end_ = end; } 42 43 private: 44 V* start_; 45 V* end_; 46 47 DISALLOW_COPY_AND_ASSIGN(GenericGraph); 48}; 49} 50} 51} // namespace v8::internal::compiler 52 53#endif // V8_COMPILER_GENERIC_GRAPH_H_ 54