Index: runtime/lib/integers.cc |
diff --git a/runtime/lib/integers.cc b/runtime/lib/integers.cc |
index b1ca62c3e311877ca86ac568531c416d42b56f18..e8d655ca416b741a98b559dfacaf451788bea44b 100644 |
--- a/runtime/lib/integers.cc |
+++ b/runtime/lib/integers.cc |
@@ -275,7 +275,9 @@ static RawInteger* ShiftOperationHelper(Token::Kind kind, |
case Token::kSHL: |
return Integer::New(mint_value << shift_count, Heap::kNew, silent); |
case Token::kSHR: |
- return Integer::New(mint_value >> -shift_count, Heap::kNew, silent); |
+ shift_count = |
+ (-shift_count > Mint::kBits) ? Mint::kBits : -shift_count; |
+ return Integer::New(mint_value >> shift_count, Heap::kNew, silent); |
default: |
UNIMPLEMENTED(); |
} |