Index: src/arm/codegen-arm.cc |
=================================================================== |
--- src/arm/codegen-arm.cc (revision 5270) |
+++ src/arm/codegen-arm.cc (working copy) |
@@ -1222,7 +1222,21 @@ |
case Token::SHR: |
case Token::SAR: { |
ASSERT(!reversed); |
- TypeInfo result = TypeInfo::Integer32(); |
+ TypeInfo result = |
+ (op == Token::SAR) ? TypeInfo::Integer32() : TypeInfo::Number(); |
+ if (!reversed) { |
+ if (op == Token::SHR) { |
+ if (int_value >= 2) { |
+ result = TypeInfo::Smi(); |
+ } else if (int_value >= 1) { |
+ result = TypeInfo::Integer32(); |
+ } |
+ } else { |
+ if (int_value >= 1) { |
+ result = TypeInfo::Smi(); |
+ } |
+ } |
+ } |
Register scratch = VirtualFrame::scratch0(); |
Register scratch2 = VirtualFrame::scratch1(); |
int shift_value = int_value & 0x1f; // least significant 5 bits |