OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_COMPILER_VERIFIER_H_ | 5 #ifndef V8_COMPILER_VERIFIER_H_ |
6 #define V8_COMPILER_VERIFIER_H_ | 6 #define V8_COMPILER_VERIFIER_H_ |
7 | 7 |
8 #include "src/base/macros.h" | 8 #include "src/base/macros.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
11 namespace internal { | 11 namespace internal { |
12 namespace compiler { | 12 namespace compiler { |
13 | 13 |
14 class Graph; | 14 class Graph; |
15 class Edge; | 15 class Edge; |
16 class Node; | 16 class Node; |
17 class Schedule; | 17 class Schedule; |
18 | 18 |
19 // Verifies properties of a graph, such as the well-formedness of inputs to | 19 // Verifies properties of a graph, such as the well-formedness of inputs to |
20 // each node, etc. | 20 // each node, etc. |
21 class Verifier { | 21 class Verifier { |
22 public: | 22 public: |
23 enum Typing { TYPED, UNTYPED }; | 23 enum Typing { TYPED, UNTYPED }; |
| 24 enum CheckInputs { kValuesOnly, kAll }; |
24 | 25 |
25 static void Run(Graph* graph, Typing typing = TYPED); | 26 static void Run(Graph* graph, Typing typing = TYPED, |
| 27 CheckInputs check_inputs = kAll); |
26 | 28 |
27 #ifdef DEBUG | 29 #ifdef DEBUG |
28 // Verifies consistency of node inputs and uses: | 30 // Verifies consistency of node inputs and uses: |
29 // - node inputs should agree with the input count computed from | 31 // - node inputs should agree with the input count computed from |
30 // the node's operator. | 32 // the node's operator. |
31 // - effect inputs should have effect outputs. | 33 // - effect inputs should have effect outputs. |
32 // - control inputs should have control outputs. | 34 // - control inputs should have control outputs. |
33 // - frame state inputs should be frame states. | 35 // - frame state inputs should be frame states. |
34 // - if the node has control uses, it should produce control. | 36 // - if the node has control uses, it should produce control. |
35 // - if the node has effect uses, it should produce effect. | 37 // - if the node has effect uses, it should produce effect. |
(...skipping 18 matching lines...) Expand all Loading... |
54 // Verifies properties of a schedule, such as dominance, phi placement, etc. | 56 // Verifies properties of a schedule, such as dominance, phi placement, etc. |
55 class ScheduleVerifier { | 57 class ScheduleVerifier { |
56 public: | 58 public: |
57 static void Run(Schedule* schedule); | 59 static void Run(Schedule* schedule); |
58 }; | 60 }; |
59 } // namespace compiler | 61 } // namespace compiler |
60 } // namespace internal | 62 } // namespace internal |
61 } // namespace v8 | 63 } // namespace v8 |
62 | 64 |
63 #endif // V8_COMPILER_VERIFIER_H_ | 65 #endif // V8_COMPILER_VERIFIER_H_ |
OLD | NEW |