| Index: src/arm/lithium-codegen-arm.cc
 | 
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc
 | 
| index 0a28d343bac887ccdeb673f9b8ea4180e05da031..204a15586c6fb71d886d8326c3a9a2b2661397c5 100644
 | 
| --- a/src/arm/lithium-codegen-arm.cc
 | 
| +++ b/src/arm/lithium-codegen-arm.cc
 | 
| @@ -1619,6 +1619,27 @@ void LCodeGen::DoSubI(LSubI* instr) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +void LCodeGen::DoRSubI(LRSubI* instr) {
 | 
| +  LOperand* left = instr->left();
 | 
| +  LOperand* right = instr->right();
 | 
| +  LOperand* result = instr->result();
 | 
| +  bool can_overflow = instr->hydrogen()->CheckFlag(HValue::kCanOverflow);
 | 
| +  SBit set_cond = can_overflow ? SetCC : LeaveCC;
 | 
| +
 | 
| +  if (right->IsStackSlot() || right->IsArgument()) {
 | 
| +    Register right_reg = EmitLoadRegister(right, ip);
 | 
| +    __ rsb(ToRegister(result), ToRegister(left), Operand(right_reg), set_cond);
 | 
| +  } else {
 | 
| +    ASSERT(right->IsRegister() || right->IsConstantOperand());
 | 
| +    __ rsb(ToRegister(result), ToRegister(left), ToOperand(right), set_cond);
 | 
| +  }
 | 
| +
 | 
| +  if (can_overflow) {
 | 
| +    DeoptimizeIf(vs, instr->environment());
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +
 | 
|  void LCodeGen::DoConstantI(LConstantI* instr) {
 | 
|    ASSERT(instr->result()->IsRegister());
 | 
|    __ mov(ToRegister(instr->result()), Operand(instr->value()));
 | 
| 
 |