| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 7a3e203beb759bad5cd333b715f4a7ef81285dbe..1681128654d377cc273d48b0a24969fd140510f2 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -8270,7 +8270,16 @@ HInstruction* HGraphBuilder::BuildBinaryOperation(BinaryOperation* expr,
|
| case Token::SHR:
|
| instr = HShr::NewHShr(zone(), context, left, right);
|
| if (FLAG_opt_safe_uint32_operations && instr->IsShr()) {
|
| - graph()->RecordUint32Instruction(instr);
|
| + bool can_be_shift_by_zero = true;
|
| + if (right->IsConstant()) {
|
| + HConstant* right_const = HConstant::cast(right);
|
| + if (right_const->HasInteger32Value() &&
|
| + (right_const->Integer32Value() & 0x1f) != 0) {
|
| + can_be_shift_by_zero = false;
|
| + }
|
| + }
|
| +
|
| + if (can_be_shift_by_zero) graph()->RecordUint32Instruction(instr);
|
| }
|
| break;
|
| case Token::SHL:
|
|
|