From 24f7a70df4e148eba2ab65ba2632c41609d1cc46 Mon Sep 17 00:00:00 2001 From: "sigurds@chromium.org" Date: Tue, 12 Aug 2014 12:20:39 +0000 Subject: [PATCH] Provide mutators in NodeProperties instead of exposing indicies. BUG= R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/462633003 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23074 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/compiler/node-properties-inl.h | 20 +++++++++---------- src/compiler/node-properties.h | 5 +++-- .../compiler/test-simplified-lowering.cc | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/compiler/node-properties-inl.h b/src/compiler/node-properties-inl.h index ea58b4d8a1..2d63b0cc1b 100644 --- a/src/compiler/node-properties-inl.h +++ b/src/compiler/node-properties-inl.h @@ -23,13 +23,12 @@ namespace compiler { // 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); } @@ -45,7 +44,7 @@ inline int NodeProperties::PastValueIndex(Node* node) { } inline int NodeProperties::PastContextIndex(Node* node) { - return GetContextIndex(node) + + return FirstContextIndex(node) + OperatorProperties::GetContextInputCount(node->op()); } @@ -71,7 +70,7 @@ inline Node* NodeProperties::GetValueInput(Node* node, int index) { 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) { @@ -106,7 +105,7 @@ inline bool NodeProperties::IsValueEdge(Node::Edge edge) { 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())); } @@ -134,13 +133,14 @@ inline bool NodeProperties::IsControl(Node* node) { // ----------------------------------------------------------------------------- // 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) { diff --git a/src/compiler/node-properties.h b/src/compiler/node-properties.h index 8588f60ea9..6088a0a3a0 100644 --- a/src/compiler/node-properties.h +++ b/src/compiler/node-properties.h @@ -29,6 +29,7 @@ class NodeProperties { 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); @@ -36,9 +37,9 @@ class NodeProperties { 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); diff --git a/test/cctest/compiler/test-simplified-lowering.cc b/test/cctest/compiler/test-simplified-lowering.cc index 1fcef85a91..4d6aab3ca1 100644 --- a/test/cctest/compiler/test-simplified-lowering.cc +++ b/test/cctest/compiler/test-simplified-lowering.cc @@ -707,7 +707,7 @@ class TestingGraph : public HandleAndZoneScope, public GraphAndBuilders { Node* tb = graph()->NewNode(common()->IfTrue(), br); Node* fb = graph()->NewNode(common()->IfFalse(), br); Node* m = graph()->NewNode(common()->Merge(2), tb, fb); - ret->ReplaceInput(NodeProperties::FirstControlIndex(ret), m); + NodeProperties::ReplaceControlInput(ret, m); return br; }