| Index: runtime/vm/intermediate_language_ia32.cc
|
| diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc
|
| index 6d83aff95493ad569d9e1d56d51487b6c8bad547..0e3106388d9a7236dea6ef410f74c446bdddc40d 100644
|
| --- a/runtime/vm/intermediate_language_ia32.cc
|
| +++ b/runtime/vm/intermediate_language_ia32.cc
|
| @@ -5916,13 +5916,6 @@ void ShiftMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->in(1).constant().IsSmi());
|
| const int32_t shift =
|
| reinterpret_cast<int32_t>(locs()->in(1).constant().raw()) >> 1;
|
| - if ((shift < 0) || (shift > kMintShiftCountLimit)) {
|
| - __ jmp(deopt);
|
| - return;
|
| - } else if (shift == 0) {
|
| - // Nothing to do for zero shift amount.
|
| - return;
|
| - }
|
| switch (op_kind()) {
|
| case Token::kSHR: {
|
| if (shift > 31) {
|
| @@ -6150,27 +6143,17 @@ void ShiftUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(constant.IsSmi());
|
| const intptr_t shift_value = Smi::Cast(constant).Value();
|
|
|
| - // Check constant shift value.
|
| - if (shift_value == 0) {
|
| - // Nothing to do.
|
| - } else if (shift_value < 0) {
|
| - // Invalid shift value.
|
| - __ jmp(deopt);
|
| - } else if (shift_value > kShifterLimit) {
|
| - // Result is 0.
|
| - __ xorl(left, left);
|
| - } else {
|
| - // Do the shift: (shift_value > 0) && (shift_value <= kShifterLimit).
|
| - switch (op_kind()) {
|
| - case Token::kSHR:
|
| - __ shrl(left, Immediate(shift_value));
|
| - break;
|
| - case Token::kSHL:
|
| - __ shll(left, Immediate(shift_value));
|
| - break;
|
| - default:
|
| - UNREACHABLE();
|
| - }
|
| +
|
| + // Do the shift: (shift_value > 0) && (shift_value <= kShifterLimit).
|
| + switch (op_kind()) {
|
| + case Token::kSHR:
|
| + __ shrl(left, Immediate(shift_value));
|
| + break;
|
| + case Token::kSHL:
|
| + __ shll(left, Immediate(shift_value));
|
| + break;
|
| + default:
|
| + UNREACHABLE();
|
| }
|
| return;
|
| }
|
|
|