Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index 364c3a1824ef671ee44dcd8f984d4be0363da993..ffe1ae8cadb819ec5e8489deb228b5f81e18ad83 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -1453,7 +1453,11 @@ void LCodeGen::DoShiftI(LShiftI* instr) { |
break; |
case Token::SHL: |
if (shift_count != 0) { |
- __ shll(ToRegister(left), Immediate(shift_count)); |
+ if (instr->hydrogen_value()->representation().IsSmi()) { |
+ __ shl(ToRegister(left), Immediate(shift_count)); |
+ } else { |
+ __ shll(ToRegister(left), Immediate(shift_count)); |
+ } |
} |
break; |
default: |