Index: src/arm/lithium-arm.cc |
diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc |
index b5b05886cb7bebce99bc6521f4e8d41dfc3af475..e75ab4b770dc7dcf59aac6777eb11fce6c892686 100644 |
--- a/src/arm/lithium-arm.cc |
+++ b/src/arm/lithium-arm.cc |
@@ -1239,11 +1239,12 @@ LInstruction* LChunkBuilder::DoDiv(HDiv* instr) { |
if (instr->representation().IsDouble()) { |
return DoArithmeticD(Token::DIV, instr); |
} else if (instr->representation().IsInteger32()) { |
- // The temporary operand is necessary to ensure that right is not allocated |
- // into edx. |
- FixedTemp(r1); |
+ // TODO(karlklose) The fixed register allocation |
Søren Thygesen Gjesse
2011/01/13 08:28:38
Please open a bug to track this, and change to TOD
Karl Klose
2011/01/13 13:52:31
Done.
|
+ // is needed because we call GenericBinaryOpStub from |
+ // the generated code, which requires registers r0 |
+ // and r1 to be used. |
LOperand* value = UseFixed(instr->left(), r0); |
- LOperand* divisor = UseRegister(instr->right()); |
+ LOperand* divisor = UseFixed(instr->right(), r1); |
return AssignEnvironment(DefineFixed(new LDivI(value, divisor), r0)); |
} else { |
return DoArithmeticT(Token::DIV, instr); |