| Index: src/arm/lithium-arm.cc | 
| diff --git a/src/arm/lithium-arm.cc b/src/arm/lithium-arm.cc | 
| index 786ceeb3cac0b52afa0500645679d174ee08ca5d..baf1b8e42bb7ddf2cd0e7ee1874733362a9cefdb 100644 | 
| --- a/src/arm/lithium-arm.cc | 
| +++ b/src/arm/lithium-arm.cc | 
| @@ -1418,8 +1418,19 @@ LInstruction* LChunkBuilder::DoAdd(HAdd* instr) { | 
|  | 
|  | 
| LInstruction* LChunkBuilder::DoPower(HPower* instr) { | 
| -  Abort("LPower instruction not implemented on ARM"); | 
| -  return NULL; | 
| +  ASSERT(instr->representation().IsDouble()); | 
| +  // We call a C function for double power. It can't trigger a GC. | 
| +  // We need to use fixed result register for the call. | 
| +  Representation exponent_type = instr->right()->representation(); | 
| +  ASSERT(instr->left()->representation().IsDouble()); | 
| +  LOperand* left = UseFixedDouble(instr->left(), d1); | 
| +  LOperand* right = exponent_type.IsDouble() ? | 
| +      UseFixedDouble(instr->right(), d2) : | 
| +      UseFixed(instr->right(), r0); | 
| +  LPower* result = new LPower(left, right); | 
| +  return MarkAsCall(DefineFixedDouble(result, d3), | 
| +                    instr, | 
| +                    CAN_DEOPTIMIZE_EAGERLY); | 
| } | 
|  | 
|  | 
|  |