| Index: src/compiler/js-typed-lowering.cc
 | 
| diff --git a/src/compiler/js-typed-lowering.cc b/src/compiler/js-typed-lowering.cc
 | 
| index acec322d0e0f8392728e2064ba1ec8287d1c3630..b0ddbb7eb29432235bc4b3f42e3d2448616546f9 100644
 | 
| --- a/src/compiler/js-typed-lowering.cc
 | 
| +++ b/src/compiler/js-typed-lowering.cc
 | 
| @@ -581,13 +581,26 @@ Reduction JSTypedLowering::ReduceJSModulus(Node* node) {
 | 
|    return NoChange();
 | 
|  }
 | 
|  
 | 
| -Reduction JSTypedLowering::ReduceInt32Binop(Node* node, const Operator* intOp) {
 | 
| +Reduction JSTypedLowering::ReduceInt32Binop(Node* node,
 | 
| +                                            const Operator* int_op) {
 | 
|    if (flags() & kDisableIntegerBinaryOpReduction) return NoChange();
 | 
| -
 | 
|    JSBinopReduction r(this, node);
 | 
| +  BinaryOperationHints::Hint feedback = r.GetNumberBinaryOperationFeedback();
 | 
| +  if (feedback != BinaryOperationHints::kAny) {
 | 
| +    Operator const* speculative_op;
 | 
| +    if (int_op->opcode() == IrOpcode::kNumberBitwiseAnd) {
 | 
| +      speculative_op = simplified()->SpeculativeNumberBitwiseAnd(feedback);
 | 
| +    } else if (int_op->opcode() == IrOpcode::kNumberBitwiseOr) {
 | 
| +      speculative_op = simplified()->SpeculativeNumberBitwiseOr(feedback);
 | 
| +    } else {
 | 
| +      DCHECK_EQ(IrOpcode::kNumberBitwiseXor, int_op->opcode());
 | 
| +      speculative_op = simplified()->SpeculativeNumberBitwiseXor(feedback);
 | 
| +    }
 | 
| +    return r.ChangeToSpeculativeOperator(speculative_op, Type::Signed32());
 | 
| +  }
 | 
|    r.ConvertInputsToNumber();
 | 
|    r.ConvertInputsToUI32(kSigned, kSigned);
 | 
| -  return r.ChangeToPureOperator(intOp, Type::Integral32());
 | 
| +  return r.ChangeToPureOperator(int_op, Type::Signed32());
 | 
|  }
 | 
|  
 | 
|  Reduction JSTypedLowering::ReduceUI32Shift(Node* node,
 | 
| @@ -603,7 +616,7 @@ Reduction JSTypedLowering::ReduceUI32Shift(Node* node,
 | 
|        speculative_op =
 | 
|            simplified()->SpeculativeNumberShiftRightLogical(feedback);
 | 
|      } else {
 | 
| -      DCHECK(shift_op->opcode() == IrOpcode::kNumberShiftRight);
 | 
| +      DCHECK_EQ(IrOpcode::kNumberShiftRight, shift_op->opcode());
 | 
|        speculative_op = simplified()->SpeculativeNumberShiftRight(feedback);
 | 
|      }
 | 
|      return r.ChangeToSpeculativeOperator(
 | 
| 
 |