| Index: src/hydrogen.cc | 
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc | 
| index dead4649a419ed43234b8b4063ad209eb4122795..19db3f1e46ca651ac1f2f45d2c41bbe8084c19f7 100644 | 
| --- a/src/hydrogen.cc | 
| +++ b/src/hydrogen.cc | 
| @@ -6353,11 +6353,6 @@ int HOptimizedGraphBuilder::InliningAstSize(Handle<JSFunction> target) { | 
| Handle<JSFunction> caller = current_info()->closure(); | 
| Handle<SharedFunctionInfo> target_shared(target->shared()); | 
|  | 
| -  // Always inline builtins marked for inlining. | 
| -  if (target->IsBuiltin()) { | 
| -    return target_shared->inline_builtin() ? 0 : kNotInlinable; | 
| -  } | 
| - | 
| // Do a quick check on source code length to avoid parsing large | 
| // inlining candidates. | 
| if (target_shared->SourceSize() > | 
| @@ -6367,7 +6362,7 @@ int HOptimizedGraphBuilder::InliningAstSize(Handle<JSFunction> target) { | 
| } | 
|  | 
| // Target must be inlineable. | 
| -  if (!target_shared->IsInlineable()) { | 
| +  if (!target->IsInlineable()) { | 
| TraceInline(target, caller, "target not inlineable"); | 
| return kNotInlinable; | 
| } | 
| @@ -6747,6 +6742,9 @@ bool HOptimizedGraphBuilder::TryInlineBuiltinFunctionCall(Call* expr, | 
| case kMathAbs: | 
| case kMathSqrt: | 
| case kMathLog: | 
| +    case kMathSin: | 
| +    case kMathCos: | 
| +    case kMathTan: | 
| if (expr->arguments()->length() == 1) { | 
| HValue* argument = Pop(); | 
| Drop(1);  // Receiver. | 
| @@ -6825,6 +6823,9 @@ bool HOptimizedGraphBuilder::TryInlineBuiltinMethodCall( | 
| case kMathAbs: | 
| case kMathSqrt: | 
| case kMathLog: | 
| +    case kMathSin: | 
| +    case kMathCos: | 
| +    case kMathTan: | 
| if (argument_count == 2 && check_type == RECEIVER_MAP_CHECK) { | 
| AddCheckConstantFunction(expr->holder(), receiver, receiver_map); | 
| HValue* argument = Pop(); | 
| @@ -9144,30 +9145,51 @@ void HOptimizedGraphBuilder::GenerateMathPow(CallRuntime* call) { | 
| } | 
|  | 
|  | 
| -void HOptimizedGraphBuilder::GenerateMathLog(CallRuntime* call) { | 
| +void HOptimizedGraphBuilder::GenerateMathSin(CallRuntime* call) { | 
| ASSERT_EQ(1, call->arguments()->length()); | 
| CHECK_ALIVE(VisitArgumentList(call->arguments())); | 
| HCallStub* result = New<HCallStub>(CodeStub::TranscendentalCache, 1); | 
| -  result->set_transcendental_type(TranscendentalCache::LOG); | 
| +  result->set_transcendental_type(TranscendentalCache::SIN); | 
| Drop(1); | 
| return ast_context()->ReturnInstruction(result, call->id()); | 
| } | 
|  | 
|  | 
| -void HOptimizedGraphBuilder::GenerateMathSqrt(CallRuntime* call) { | 
| -  ASSERT(call->arguments()->length() == 1); | 
| -  CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); | 
| -  HValue* value = Pop(); | 
| -  HInstruction* result = New<HUnaryMathOperation>(value, kMathSqrt); | 
| +void HOptimizedGraphBuilder::GenerateMathCos(CallRuntime* call) { | 
| +  ASSERT_EQ(1, call->arguments()->length()); | 
| +  CHECK_ALIVE(VisitArgumentList(call->arguments())); | 
| +  HCallStub* result = New<HCallStub>(CodeStub::TranscendentalCache, 1); | 
| +  result->set_transcendental_type(TranscendentalCache::COS); | 
| +  Drop(1); | 
| return ast_context()->ReturnInstruction(result, call->id()); | 
| } | 
|  | 
|  | 
| -void HOptimizedGraphBuilder::GenerateMathFloor(CallRuntime* call) { | 
| +void HOptimizedGraphBuilder::GenerateMathTan(CallRuntime* call) { | 
| +  ASSERT_EQ(1, call->arguments()->length()); | 
| +  CHECK_ALIVE(VisitArgumentList(call->arguments())); | 
| +  HCallStub* result = New<HCallStub>(CodeStub::TranscendentalCache, 1); | 
| +  result->set_transcendental_type(TranscendentalCache::TAN); | 
| +  Drop(1); | 
| +  return ast_context()->ReturnInstruction(result, call->id()); | 
| +} | 
| + | 
| + | 
| +void HOptimizedGraphBuilder::GenerateMathLog(CallRuntime* call) { | 
| +  ASSERT_EQ(1, call->arguments()->length()); | 
| +  CHECK_ALIVE(VisitArgumentList(call->arguments())); | 
| +  HCallStub* result = New<HCallStub>(CodeStub::TranscendentalCache, 1); | 
| +  result->set_transcendental_type(TranscendentalCache::LOG); | 
| +  Drop(1); | 
| +  return ast_context()->ReturnInstruction(result, call->id()); | 
| +} | 
| + | 
| + | 
| +void HOptimizedGraphBuilder::GenerateMathSqrt(CallRuntime* call) { | 
| ASSERT(call->arguments()->length() == 1); | 
| CHECK_ALIVE(VisitForValue(call->arguments()->at(0))); | 
| HValue* value = Pop(); | 
| -  HInstruction* result = New<HUnaryMathOperation>(value, kMathFloor); | 
| +  HInstruction* result = New<HUnaryMathOperation>(value, kMathSqrt); | 
| return ast_context()->ReturnInstruction(result, call->id()); | 
| } | 
|  | 
|  |