Revision: 7130
Author: [email protected]
Date: Thu Mar 10 05:34:56 2011
Log: Crankshaft: Fix error in range analysis of compare operations.
Review URL: http://codereview.chromium.org/6658035
http://code.google.com/p/v8/source/detail?r=7130
Modified:
/branches/bleeding_edge/src/hydrogen.cc
=======================================
--- /branches/bleeding_edge/src/hydrogen.cc Thu Mar 10 05:26:51 2011
+++ /branches/bleeding_edge/src/hydrogen.cc Thu Mar 10 05:34:56 2011
@@ -900,13 +900,15 @@
ASSERT((test->FirstSuccessor() == dest) == (test->SecondSuccessor() !=
dest));
if (test->value()->IsCompare()) {
HCompare* compare = HCompare::cast(test->value());
- Token::Value op = compare->token();
- if (test->SecondSuccessor() == dest) {
- op = Token::NegateCompareOp(op);
- }
- Token::Value inverted_op = Token::InvertCompareOp(op);
- InferControlFlowRange(op, compare->left(), compare->right());
- InferControlFlowRange(inverted_op, compare->right(), compare->left());
+ if (compare->GetInputRepresentation().IsInteger32()) {
+ Token::Value op = compare->token();
+ if (test->SecondSuccessor() == dest) {
+ op = Token::NegateCompareOp(op);
+ }
+ Token::Value inverted_op = Token::InvertCompareOp(op);
+ InferControlFlowRange(op, compare->left(), compare->right());
+ InferControlFlowRange(inverted_op, compare->right(),
compare->left());
+ }
}
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev