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 10 namespace v8 { 11 namespace internal { 12 13 class Zone; 14 15 namespace compiler { 16 17 class 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 31 template <class V> 32 class 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