| Index: src/hydrogen.cc
 | 
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
 | 
| index ead56a494700d8c70664400fcfdbec99eb61a352..f4b6d039cb5aa11fef0a59b8b4a5e29237cd5447 100644
 | 
| --- a/src/hydrogen.cc
 | 
| +++ b/src/hydrogen.cc
 | 
| @@ -7659,6 +7659,41 @@ bool HOptimizedGraphBuilder::TryInlineBuiltinMethodCall(
 | 
|        Add<HSimulate>(expr->id(), REMOVABLE_SIMULATE);
 | 
|        return true;
 | 
|      }
 | 
| +    case kArrayPush: {
 | 
| +      if (!expr->IsMonomorphic() || expr->check_type() != RECEIVER_MAP_CHECK) {
 | 
| +        return false;
 | 
| +      }
 | 
| +      if (receiver_map->instance_type() != JS_ARRAY_TYPE) return false;
 | 
| +      ElementsKind elements_kind = receiver_map->elements_kind();
 | 
| +      if (!IsFastElementsKind(elements_kind)) return false;
 | 
| +      AddCheckConstantFunction(expr->holder(), receiver, receiver_map);
 | 
| +
 | 
| +      HValue* op_vals[] = {
 | 
| +        context(),
 | 
| +        // Receiver.
 | 
| +        environment()->ExpressionStackAt(expr->arguments()->length())
 | 
| +      };
 | 
| +
 | 
| +      const int argc = expr->arguments()->length();
 | 
| +      // Includes receiver.
 | 
| +      PushArgumentsFromEnvironment(argc + 1);
 | 
| +
 | 
| +      CallInterfaceDescriptor* descriptor =
 | 
| +          isolate()->call_descriptor(Isolate::CallHandler);
 | 
| +
 | 
| +      ArrayPushStub stub(receiver_map->elements_kind(), argc);
 | 
| +      Handle<Code> code = stub.GetCode(isolate());
 | 
| +      HConstant* code_value = Add<HConstant>(code);
 | 
| +
 | 
| +      ASSERT((sizeof(op_vals) / kPointerSize) ==
 | 
| +             descriptor->environment_length());
 | 
| +
 | 
| +      HInstruction* call = New<HCallWithDescriptor>(
 | 
| +          code_value, argc + 1, descriptor,
 | 
| +          Vector<HValue*>(op_vals, descriptor->environment_length()));
 | 
| +      ast_context()->ReturnInstruction(call, expr->id());
 | 
| +      return true;
 | 
| +    }
 | 
|      default:
 | 
|        // Not yet supported for inlining.
 | 
|        break;
 | 
| 
 |