Index: src/compiler/js-typed-lowering.cc |
diff --git a/src/compiler/js-typed-lowering.cc b/src/compiler/js-typed-lowering.cc |
index 9b1d6780db188148a04f3a19825f2045745feecb..c3b723026da44cdb916cd3a667b4c41ab487f622 100644 |
--- a/src/compiler/js-typed-lowering.cc |
+++ b/src/compiler/js-typed-lowering.cc |
@@ -439,12 +439,17 @@ Reduction JSTypedLowering::ReduceUI32Shift(Node* node, |
Signedness left_signedness, |
const Operator* shift_op) { |
JSBinopReduction r(this, node); |
- Type* reduce_type = r.IsStrong() ? Type::Number() : Type::Primitive(); |
- if (r.BothInputsAre(reduce_type)) { |
- r.ConvertInputsForShift(left_signedness); |
- return r.ChangeToPureOperator(shift_op, Type::Integral32()); |
+ if (r.IsStrong()) { |
+ if (r.BothInputsAre(Type::Number())) { |
+ r.ConvertInputsForShift(left_signedness); |
+ return r.ChangeToPureOperator(shift_op); |
+ } |
+ return NoChange(); |
} |
- return NoChange(); |
+ Node* frame_state = NodeProperties::GetFrameStateInput(node, 1); |
+ r.ConvertInputsToNumber(frame_state); |
+ r.ConvertInputsForShift(left_signedness); |
+ return r.ChangeToPureOperator(shift_op); |
} |