| Index: src/hydrogen-instructions.cc
 | 
| ===================================================================
 | 
| --- src/hydrogen-instructions.cc	(revision 9842)
 | 
| +++ src/hydrogen-instructions.cc	(working copy)
 | 
| @@ -1252,34 +1252,23 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -Range* HBitAnd::InferRange() {
 | 
| +Range* HBitwise::InferRange() {
 | 
| +  if (op() == Token::BIT_XOR) return HValue::InferRange();
 | 
|    int32_t left_mask = (left()->range() != NULL)
 | 
|        ? left()->range()->Mask()
 | 
|        : 0xffffffff;
 | 
|    int32_t right_mask = (right()->range() != NULL)
 | 
|        ? right()->range()->Mask()
 | 
|        : 0xffffffff;
 | 
| -  int32_t result_mask = left_mask & right_mask;
 | 
| +  int32_t result_mask = (op() == Token::BIT_AND)
 | 
| +      ? left_mask & right_mask
 | 
| +      : left_mask | right_mask;
 | 
|    return (result_mask >= 0)
 | 
|        ? new Range(0, result_mask)
 | 
|        : HValue::InferRange();
 | 
|  }
 | 
|  
 | 
|  
 | 
| -Range* HBitOr::InferRange() {
 | 
| -  int32_t left_mask = (left()->range() != NULL)
 | 
| -      ? left()->range()->Mask()
 | 
| -      : 0xffffffff;
 | 
| -  int32_t right_mask = (right()->range() != NULL)
 | 
| -      ? right()->range()->Mask()
 | 
| -      : 0xffffffff;
 | 
| -  int32_t result_mask = left_mask | right_mask;
 | 
| -  return (result_mask >= 0)
 | 
| -      ? new Range(0, result_mask)
 | 
| -      : HValue::InferRange();
 | 
| -}
 | 
| -
 | 
| -
 | 
|  Range* HSar::InferRange() {
 | 
|    if (right()->IsConstant()) {
 | 
|      HConstant* c = HConstant::cast(right());
 | 
| @@ -1785,21 +1774,6 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -HType HBitAnd::CalculateInferredType() {
 | 
| -  return HType::TaggedNumber();
 | 
| -}
 | 
| -
 | 
| -
 | 
| -HType HBitXor::CalculateInferredType() {
 | 
| -  return HType::TaggedNumber();
 | 
| -}
 | 
| -
 | 
| -
 | 
| -HType HBitOr::CalculateInferredType() {
 | 
| -  return HType::TaggedNumber();
 | 
| -}
 | 
| -
 | 
| -
 | 
|  HType HBitNot::CalculateInferredType() {
 | 
|    return HType::TaggedNumber();
 | 
|  }
 | 
| @@ -1810,21 +1784,6 @@
 | 
|  }
 | 
|  
 | 
|  
 | 
| -HType HShl::CalculateInferredType() {
 | 
| -  return HType::TaggedNumber();
 | 
| -}
 | 
| -
 | 
| -
 | 
| -HType HShr::CalculateInferredType() {
 | 
| -  return HType::TaggedNumber();
 | 
| -}
 | 
| -
 | 
| -
 | 
| -HType HSar::CalculateInferredType() {
 | 
| -  return HType::TaggedNumber();
 | 
| -}
 | 
| -
 | 
| -
 | 
|  HType HStringCharFromCode::CalculateInferredType() {
 | 
|    return HType::String();
 | 
|  }
 | 
| 
 |