Home | History | Annotate | Download | only in compiler
      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