Index: runtime/vm/intermediate_language_arm.cc |
diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc |
index 026d0ed938dd24e31d6e6318895c900dd38f3d84..06f3988208f34eb2d517a5903c0c695df63b68f6 100644 |
--- a/runtime/vm/intermediate_language_arm.cc |
+++ b/runtime/vm/intermediate_language_arm.cc |
@@ -6221,14 +6221,17 @@ void ShiftMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
} else { |
if (shift == 32) { |
__ mov(out_lo, Operand(left_hi)); |
- } else { |
+ } else if (shift < 64) { |
__ Asr(out_lo, left_hi, Operand(shift - 32)); |
+ } else { |
+ __ Asr(out_lo, left_hi, Operand(31)); |
} |
__ Asr(out_hi, left_hi, Operand(31)); |
} |
break; |
} |
case Token::kSHL: { |
+ ASSERT(shift < 64); |
if (shift < 32) { |
__ Lsr(out_hi, left_lo, Operand(32 - shift)); |
__ orr(out_hi, out_hi, Operand(left_hi, LSL, shift)); |