Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 057ca1ef2bae528deba94161f7478d26203a4d8c..0650cd511cb722c29b40329317d81c91ce60b591 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -1725,6 +1725,9 @@ void LCodeGen::DoShiftI(LShiftI* instr) { |
case Token::SAR: |
if (shift_count != 0) { |
__ mov(result, Operand(left, ASR, shift_count)); |
+ if (instr->hydrogen_value()->representation().IsSmi()) { |
+ __ and_(result, result, Operand(~kSmiTagMask)); |
+ } |
} else { |
__ Move(result, left); |
} |