Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 4ce7fd6067d106d92209b07a5f17d272bd15b292..75e34e97d1a46f21df3c799ee60b774a055a11f5 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -1750,6 +1750,9 @@ void LCodeGen::DoShiftI(LShiftI* instr) { |
case Token::SAR: |
if (shift_count != 0) { |
__ sar(ToRegister(left), shift_count); |
+ if (instr->hydrogen_value()->representation().IsSmi()) { |
+ __ and_(ToRegister(left), ~kSmiTagMask); |
+ } |
} |
break; |
case Token::SHR: |