// Inputs are always arranged in order as follows:
// 0 [ values, context, effects, control ] node->InputCount()
+inline int NodeProperties::FirstValueIndex(Node* node) { return 0; }
-inline int NodeProperties::GetContextIndex(Node* node) {
+inline int NodeProperties::FirstContextIndex(Node* node) {
return PastValueIndex(node);
}
-inline int NodeProperties::FirstValueIndex(Node* node) { return 0; }
-
inline int NodeProperties::FirstEffectIndex(Node* node) {
return PastContextIndex(node);
}
}
inline int NodeProperties::PastContextIndex(Node* node) {
- return GetContextIndex(node) +
+ return FirstContextIndex(node) +
OperatorProperties::GetContextInputCount(node->op());
}
inline Node* NodeProperties::GetContextInput(Node* node) {
DCHECK(OperatorProperties::HasContextInput(node->op()));
- return node->InputAt(GetContextIndex(node));
+ return node->InputAt(FirstContextIndex(node));
}
inline Node* NodeProperties::GetEffectInput(Node* node, int index) {
inline bool NodeProperties::IsContextEdge(Node::Edge edge) {
Node* node = edge.from();
- return IsInputRange(edge, GetContextIndex(node),
+ return IsInputRange(edge, FirstContextIndex(node),
OperatorProperties::GetContextInputCount(node->op()));
}
// -----------------------------------------------------------------------------
// Miscellaneous mutators.
+inline void NodeProperties::ReplaceControlInput(Node* node, Node* control) {
+ node->ReplaceInput(FirstControlIndex(node), control);
+}
+
inline void NodeProperties::ReplaceEffectInput(Node* node, Node* effect,
int index) {
DCHECK(index < OperatorProperties::GetEffectInputCount(node->op()));
- return node->ReplaceInput(
- OperatorProperties::GetValueInputCount(node->op()) +
- OperatorProperties::GetContextInputCount(node->op()) + index,
- effect);
+ return node->ReplaceInput(FirstEffectIndex(node) + index, effect);
}
inline void NodeProperties::RemoveNonValueInputs(Node* node) {
static inline bool IsControl(Node* node);
+ static inline void ReplaceControlInput(Node* node, Node* control);
static inline void ReplaceEffectInput(Node* node, Node* effect,
int index = 0);
static inline void RemoveNonValueInputs(Node* node);
static inline Bounds GetBounds(Node* node);
static inline void SetBounds(Node* node, Bounds bounds);
- static inline int GetContextIndex(Node* node);
-
+ private:
static inline int FirstValueIndex(Node* node);
+ static inline int FirstContextIndex(Node* node);
static inline int FirstEffectIndex(Node* node);
static inline int FirstControlIndex(Node* node);
static inline int PastValueIndex(Node* node);