| Index: src/ia32/lithium-ia32.cc
 | 
| ===================================================================
 | 
| --- src/ia32/lithium-ia32.cc	(revision 13175)
 | 
| +++ src/ia32/lithium-ia32.cc	(working copy)
 | 
| @@ -1264,6 +1264,13 @@
 | 
|    if (instr->representation().IsDouble()) {
 | 
|      return DoArithmeticD(Token::DIV, instr);
 | 
|    } else if (instr->representation().IsInteger32()) {
 | 
| +    if (instr->HasPowerOf2Divisor()) {
 | 
| +      ASSERT(!instr->CheckFlag(HValue::kCanBeDivByZero));
 | 
| +      LOperand* value = UseRegisterAtStart(instr->left());
 | 
| +      LDivI* div =
 | 
| +          new(zone()) LDivI(value, UseOrConstant(instr->right()), NULL);
 | 
| +      return AssignEnvironment(DefineSameAsFirst(div));
 | 
| +    }
 | 
|      // The temporary operand is necessary to ensure that right is not allocated
 | 
|      // into edx.
 | 
|      LOperand* temp = FixedTemp(edx);
 | 
| 
 |