| Index: runtime/vm/object.cc
|
| diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
|
| index 694d3a93a15b158b1d2e5d3b2b349f3d946f1609..94d9f2bf04b80860a1eab2f3a560ea240f3f28e5 100644
|
| --- a/runtime/vm/object.cc
|
| +++ b/runtime/vm/object.cc
|
| @@ -15903,9 +15903,9 @@ RawInteger* Smi::ShiftOp(Token::Kind kind,
|
| return raw();
|
| }
|
| { // Check for overflow.
|
| - int cnt = Utils::HighestBit(left_value);
|
| - if ((cnt + right_value) >= Smi::kBits) {
|
| - if ((cnt + right_value) >= Mint::kBits) {
|
| + int cnt = Utils::BitLength(left_value);
|
| + if ((cnt + right_value) > Smi::kBits) {
|
| + if ((cnt + right_value) > Mint::kBits) {
|
| return Bigint::NewFromShiftedInt64(left_value, right_value);
|
| } else {
|
| int64_t left_64 = left_value;
|
|
|