| Index: src/ia32/lithium-codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/lithium-codegen-ia32.cc (revision 14364)
|
| +++ src/ia32/lithium-codegen-ia32.cc (working copy)
|
| @@ -1692,11 +1692,11 @@
|
| uint8_t shift_count = static_cast<uint8_t>(value & 0x1F);
|
| switch (instr->op()) {
|
| case Token::ROR:
|
| - if (shift_count == 0 && instr->can_deopt()) {
|
| + if (shift_count != 0) {
|
| + __ ror(ToRegister(left), shift_count);
|
| + } else if (instr->can_deopt()) {
|
| __ test(ToRegister(left), Immediate(0x80000000));
|
| DeoptimizeIf(not_zero, instr->environment());
|
| - } else {
|
| - __ ror(ToRegister(left), shift_count);
|
| }
|
| break;
|
| case Token::SAR:
|
| @@ -1705,11 +1705,11 @@
|
| }
|
| break;
|
| case Token::SHR:
|
| - if (shift_count == 0 && instr->can_deopt()) {
|
| + if (shift_count != 0) {
|
| + __ shr(ToRegister(left), shift_count);
|
| + } else if (instr->can_deopt()) {
|
| __ test(ToRegister(left), Immediate(0x80000000));
|
| DeoptimizeIf(not_zero, instr->environment());
|
| - } else {
|
| - __ shr(ToRegister(left), shift_count);
|
| }
|
| break;
|
| case Token::SHL:
|
|
|