Index: src/compiler/change-lowering.cc |
diff --git a/src/compiler/change-lowering.cc b/src/compiler/change-lowering.cc |
index 16fbfa3fbedcf84d3ff256a399465e8c91274e2c..a4e081a58d6481d39aa0f082353bd856eb5cdbdd 100644 |
--- a/src/compiler/change-lowering.cc |
+++ b/src/compiler/change-lowering.cc |
@@ -163,6 +163,9 @@ Reduction ChangeLowering::ChangeInt32ToTagged(Node* value, Node* control) { |
machine()->Word64Shl(), |
graph()->NewNode(machine()->ChangeInt32ToInt64(), value), |
SmiShiftBitsConstant())); |
+ } else if (NodeProperties::GetBounds(value).upper->Is(Type::SignedSmall())) { |
+ return Replace( |
+ graph()->NewNode(machine()->WordShl(), value, SmiShiftBitsConstant())); |
} |
Node* add = graph()->NewNode(machine()->Int32AddWithOverflow(), value, value); |