OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 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 | 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_NODE_PROPERTIES_INL_H_ | 5 #ifndef V8_COMPILER_NODE_PROPERTIES_INL_H_ |
6 #define V8_COMPILER_NODE_PROPERTIES_INL_H_ | 6 #define V8_COMPILER_NODE_PROPERTIES_INL_H_ |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/compiler/common-operator.h" | 10 #include "src/compiler/common-operator.h" |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 int index) { | 141 int index) { |
142 DCHECK(index < OperatorProperties::GetEffectInputCount(node->op())); | 142 DCHECK(index < OperatorProperties::GetEffectInputCount(node->op())); |
143 return node->ReplaceInput(FirstEffectIndex(node) + index, effect); | 143 return node->ReplaceInput(FirstEffectIndex(node) + index, effect); |
144 } | 144 } |
145 | 145 |
146 inline void NodeProperties::RemoveNonValueInputs(Node* node) { | 146 inline void NodeProperties::RemoveNonValueInputs(Node* node) { |
147 node->TrimInputCount(OperatorProperties::GetValueInputCount(node->op())); | 147 node->TrimInputCount(OperatorProperties::GetValueInputCount(node->op())); |
148 } | 148 } |
149 | 149 |
150 | 150 |
| 151 // Replace value uses of {node} with {value} and effect uses of {node} with |
| 152 // {effect}. If {effect == NULL}, then use the effect input to {node}. |
| 153 inline void NodeProperties::ReplaceWithValue(Node* node, Node* value, |
| 154 Node* effect) { |
| 155 DCHECK(!OperatorProperties::HasControlOutput(node->op())); |
| 156 if (effect == NULL && OperatorProperties::HasEffectInput(node->op())) { |
| 157 effect = NodeProperties::GetEffectInput(node); |
| 158 } |
| 159 |
| 160 // Requires distinguishing between value and effect edges. |
| 161 UseIter iter = node->uses().begin(); |
| 162 while (iter != node->uses().end()) { |
| 163 if (NodeProperties::IsEffectEdge(iter.edge())) { |
| 164 DCHECK_NE(NULL, effect); |
| 165 iter = iter.UpdateToAndIncrement(effect); |
| 166 } else { |
| 167 iter = iter.UpdateToAndIncrement(value); |
| 168 } |
| 169 } |
| 170 } |
| 171 |
| 172 |
151 // ----------------------------------------------------------------------------- | 173 // ----------------------------------------------------------------------------- |
152 // Type Bounds. | 174 // Type Bounds. |
153 | 175 |
154 inline Bounds NodeProperties::GetBounds(Node* node) { return node->bounds(); } | 176 inline Bounds NodeProperties::GetBounds(Node* node) { return node->bounds(); } |
155 | 177 |
156 inline void NodeProperties::SetBounds(Node* node, Bounds b) { | 178 inline void NodeProperties::SetBounds(Node* node, Bounds b) { |
157 node->set_bounds(b); | 179 node->set_bounds(b); |
158 } | 180 } |
159 | 181 |
160 | 182 |
161 } | 183 } |
162 } | 184 } |
163 } // namespace v8::internal::compiler | 185 } // namespace v8::internal::compiler |
164 | 186 |
165 #endif // V8_COMPILER_NODE_PROPERTIES_INL_H_ | 187 #endif // V8_COMPILER_NODE_PROPERTIES_INL_H_ |
OLD | NEW |