Index: src/compiler/node-properties-inl.h |
diff --git a/src/compiler/node-properties-inl.h b/src/compiler/node-properties-inl.h |
index 3f6d53105b1018e2a322f17c822f744c0df56497..78baf4d142bb96e1542739f530319769624d7b57 100644 |
--- a/src/compiler/node-properties-inl.h |
+++ b/src/compiler/node-properties-inl.h |
@@ -198,12 +198,30 @@ inline void NodeProperties::ReplaceWithValue(Node* node, Node* value, |
// ----------------------------------------------------------------------------- |
// Type Bounds. |
-inline Bounds NodeProperties::GetBounds(Node* node) { return node->bounds(); } |
+inline bool NodeProperties::IsTyped(Node* node) { |
+ Bounds bounds = node->bounds(); |
+ DCHECK((bounds.lower == NULL) == (bounds.upper == NULL)); |
+ return bounds.upper != NULL; |
+} |
+ |
+inline Bounds NodeProperties::GetBounds(Node* node) { |
+ DCHECK(IsTyped(node)); |
+ return node->bounds(); |
+} |
inline void NodeProperties::SetBounds(Node* node, Bounds b) { |
+ DCHECK(b.lower != NULL && b.upper != NULL); |
node->set_bounds(b); |
} |
+inline bool NodeProperties::AllValueInputsAreTyped(Node* node) { |
+ int input_count = OperatorProperties::GetValueInputCount(node->op()); |
+ for (int i = 0; i < input_count; ++i) { |
+ if (!IsTyped(GetValueInput(node, i))) return false; |
+ } |
+ return true; |
+} |
+ |
} |
} |