blob: 700f0071b1e531e5514a121554a984cdcba3924d [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// Copyright 2015 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_ALL_NODES_H_
6#define V8_COMPILER_ALL_NODES_H_
7
8#include "src/compiler/node.h"
9#include "src/zone-containers.h"
10
11namespace v8 {
12namespace internal {
13namespace compiler {
14
15// A helper utility that traverses the graph and gathers all nodes reachable
16// from end.
17class AllNodes {
18 public:
19 // Constructor. Traverses the graph and builds the {live} sets.
20 AllNodes(Zone* local_zone, const Graph* graph);
21
22 bool IsLive(Node* node) {
23 if (!node) return false;
24 size_t id = node->id();
25 return id < is_live.size() && is_live[id];
26 }
27
28 NodeVector live; // Nodes reachable from end.
29
30 private:
31 BoolVector is_live;
32};
33
34} // namespace compiler
35} // namespace internal
36} // namespace v8
37
38#endif // V8_COMPILER_ALL_NODES_H_