Index: src/compiler/x64/instruction-scheduler-x64.cc |
diff --git a/src/compiler/x64/instruction-scheduler-x64.cc b/src/compiler/x64/instruction-scheduler-x64.cc |
index 6311d86ed5f6f9648c2cba1e604c5bbaeee11f04..4208d8a5949c071c2c2d6b9895db31d43abe137e 100644 |
--- a/src/compiler/x64/instruction-scheduler-x64.cc |
+++ b/src/compiler/x64/instruction-scheduler-x64.cc |
@@ -36,10 +36,6 @@ int InstructionScheduler::GetTargetInstructionFlags( |
case kX64Imul32: |
case kX64ImulHigh32: |
case kX64UmulHigh32: |
- case kX64Idiv: |
- case kX64Idiv32: |
- case kX64Udiv: |
- case kX64Udiv32: |
case kX64Not: |
case kX64Not32: |
case kX64Neg: |
@@ -133,6 +129,14 @@ int InstructionScheduler::GetTargetInstructionFlags( |
? kNoOpcodeFlags |
: kIsLoadOperation | kHasSideEffect; |
+ case kX64Idiv: |
+ case kX64Idiv32: |
+ case kX64Udiv: |
+ case kX64Udiv32: |
+ return (instr->addressing_mode() == kMode_None) |
+ ? kMayNeedDeoptCheck |
+ : kMayNeedDeoptCheck | kIsLoadOperation | kHasSideEffect; |
+ |
case kX64Movsxbl: |
case kX64Movzxbl: |
case kX64Movsxbq: |