| Index: src/arm/lithium-codegen-arm.cc
|
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
|
| index e07118317c464ba1041fc36814dfcfda6b56fb16..ca11fa542e1ee4ed1744838f88330675525fb134 100644
|
| --- a/src/arm/lithium-codegen-arm.cc
|
| +++ b/src/arm/lithium-codegen-arm.cc
|
| @@ -1464,6 +1464,9 @@ void LCodeGen::DoShiftI(LShiftI* instr) {
|
| // Mask the right_op operand.
|
| __ and_(scratch, ToRegister(right_op), Operand(0x1F));
|
| switch (instr->op()) {
|
| + case Token::ROR:
|
| + __ mov(result, Operand(left, ROR, scratch));
|
| + break;
|
| case Token::SAR:
|
| __ mov(result, Operand(left, ASR, scratch));
|
| break;
|
| @@ -1487,6 +1490,13 @@ void LCodeGen::DoShiftI(LShiftI* instr) {
|
| int value = ToInteger32(LConstantOperand::cast(right_op));
|
| uint8_t shift_count = static_cast<uint8_t>(value & 0x1F);
|
| switch (instr->op()) {
|
| + case Token::ROR:
|
| + if (shift_count != 0) {
|
| + __ mov(result, Operand(left, ROR, shift_count));
|
| + } else {
|
| + __ Move(result, left);
|
| + }
|
| + break;
|
| case Token::SAR:
|
| if (shift_count != 0) {
|
| __ mov(result, Operand(left, ASR, shift_count));
|
|
|