OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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_EFFECT_CONTROL_LINEARIZER_H_ | 5 #ifndef V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ |
6 #define V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ | 6 #define V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ |
7 | 7 |
8 #include "src/compiler/common-operator.h" | 8 #include "src/compiler/common-operator.h" |
9 #include "src/compiler/node.h" | 9 #include "src/compiler/node.h" |
10 #include "src/compiler/simplified-operator.h" | 10 #include "src/compiler/simplified-operator.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 class Graph; | 23 class Graph; |
24 class Schedule; | 24 class Schedule; |
25 | 25 |
26 class EffectControlLinearizer { | 26 class EffectControlLinearizer { |
27 public: | 27 public: |
28 EffectControlLinearizer(JSGraph* graph, Schedule* schedule, Zone* temp_zone); | 28 EffectControlLinearizer(JSGraph* graph, Schedule* schedule, Zone* temp_zone); |
29 | 29 |
30 void Run(); | 30 void Run(); |
31 | 31 |
32 private: | 32 private: |
33 void ProcessNode(Node* node, Node** current_effect, Node** control); | 33 void ProcessNode(Node* node, Node** frame_state, Node** effect, |
| 34 Node** control); |
34 | 35 |
35 struct ValueEffectControl { | 36 struct ValueEffectControl { |
36 Node* value; | 37 Node* value; |
37 Node* effect; | 38 Node* effect; |
38 Node* control; | 39 Node* control; |
39 ValueEffectControl(Node* value, Node* effect, Node* control) | 40 ValueEffectControl(Node* value, Node* effect, Node* control) |
40 : value(value), effect(effect), control(control) {} | 41 : value(value), effect(effect), control(control) {} |
41 }; | 42 }; |
42 | 43 |
43 bool TryWireInStateEffect(Node* node, Node** effect, Node** control); | 44 bool TryWireInStateEffect(Node* node, Node* frame_state, Node** effect, |
| 45 Node** control); |
44 ValueEffectControl LowerTypeGuard(Node* node, Node* effect, Node* control); | 46 ValueEffectControl LowerTypeGuard(Node* node, Node* effect, Node* control); |
45 ValueEffectControl LowerChangeBitToTagged(Node* node, Node* effect, | 47 ValueEffectControl LowerChangeBitToTagged(Node* node, Node* effect, |
46 Node* control); | 48 Node* control); |
47 ValueEffectControl LowerChangeInt31ToTaggedSigned(Node* node, Node* effect, | 49 ValueEffectControl LowerChangeInt31ToTaggedSigned(Node* node, Node* effect, |
48 Node* control); | 50 Node* control); |
49 ValueEffectControl LowerChangeInt32ToTagged(Node* node, Node* effect, | 51 ValueEffectControl LowerChangeInt32ToTagged(Node* node, Node* effect, |
50 Node* control); | 52 Node* control); |
51 ValueEffectControl LowerChangeUint32ToTagged(Node* node, Node* effect, | 53 ValueEffectControl LowerChangeUint32ToTagged(Node* node, Node* effect, |
52 Node* control); | 54 Node* control); |
53 ValueEffectControl LowerChangeFloat64ToTagged(Node* node, Node* effect, | 55 ValueEffectControl LowerChangeFloat64ToTagged(Node* node, Node* effect, |
54 Node* control); | 56 Node* control); |
55 ValueEffectControl LowerChangeTaggedSignedToInt32(Node* node, Node* effect, | 57 ValueEffectControl LowerChangeTaggedSignedToInt32(Node* node, Node* effect, |
56 Node* control); | 58 Node* control); |
57 ValueEffectControl LowerChangeTaggedToBit(Node* node, Node* effect, | 59 ValueEffectControl LowerChangeTaggedToBit(Node* node, Node* effect, |
58 Node* control); | 60 Node* control); |
59 ValueEffectControl LowerChangeTaggedToInt32(Node* node, Node* effect, | 61 ValueEffectControl LowerChangeTaggedToInt32(Node* node, Node* effect, |
60 Node* control); | 62 Node* control); |
61 ValueEffectControl LowerChangeTaggedToUint32(Node* node, Node* effect, | 63 ValueEffectControl LowerChangeTaggedToUint32(Node* node, Node* effect, |
62 Node* control); | 64 Node* control); |
63 ValueEffectControl LowerCheckedUint32ToInt32(Node* node, Node* effect, | 65 ValueEffectControl LowerCheckedUint32ToInt32(Node* node, Node* frame_state, |
64 Node* control); | 66 Node* effect, Node* control); |
65 ValueEffectControl LowerCheckedFloat64ToInt32(Node* node, Node* effect, | 67 ValueEffectControl LowerCheckedFloat64ToInt32(Node* node, Node* frame_state, |
66 Node* control); | 68 Node* effect, Node* control); |
67 ValueEffectControl LowerCheckedTaggedToInt32(Node* node, Node* effect, | 69 ValueEffectControl LowerCheckedTaggedToInt32(Node* node, Node* frame_state, |
68 Node* control); | 70 Node* effect, Node* control); |
69 ValueEffectControl LowerCheckedTaggedToFloat64(Node* node, Node* effect, | 71 ValueEffectControl LowerCheckedTaggedToFloat64(Node* node, Node* frame_state, |
70 Node* control); | 72 Node* effect, Node* control); |
71 ValueEffectControl LowerChangeTaggedToFloat64(Node* node, Node* effect, | 73 ValueEffectControl LowerChangeTaggedToFloat64(Node* node, Node* effect, |
72 Node* control); | 74 Node* control); |
73 ValueEffectControl LowerTruncateTaggedToFloat64(Node* node, Node* effect, | 75 ValueEffectControl LowerTruncateTaggedToFloat64(Node* node, Node* effect, |
74 Node* control); | 76 Node* control); |
75 ValueEffectControl LowerTruncateTaggedToWord32(Node* node, Node* effect, | 77 ValueEffectControl LowerTruncateTaggedToWord32(Node* node, Node* effect, |
76 Node* control); | 78 Node* control); |
77 ValueEffectControl LowerObjectIsCallable(Node* node, Node* effect, | 79 ValueEffectControl LowerObjectIsCallable(Node* node, Node* effect, |
78 Node* control); | 80 Node* control); |
79 ValueEffectControl LowerObjectIsNumber(Node* node, Node* effect, | 81 ValueEffectControl LowerObjectIsNumber(Node* node, Node* effect, |
80 Node* control); | 82 Node* control); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 JSGraph* js_graph_; | 120 JSGraph* js_graph_; |
119 Schedule* schedule_; | 121 Schedule* schedule_; |
120 Zone* temp_zone_; | 122 Zone* temp_zone_; |
121 }; | 123 }; |
122 | 124 |
123 } // namespace compiler | 125 } // namespace compiler |
124 } // namespace internal | 126 } // namespace internal |
125 } // namespace v8 | 127 } // namespace v8 |
126 | 128 |
127 #endif // V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ | 129 #endif // V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ |
OLD | NEW |