Index: src/ic.cc |
=================================================================== |
--- src/ic.cc (revision 4073) |
+++ src/ic.cc (working copy) |
@@ -458,6 +458,17 @@ |
ASSERT(result != Heap::the_hole_value()); |
if (result->IsJSFunction()) { |
+ // Check if there is an optimized (builtin) version of the function. |
+ // Ignored this will degrade performance for some Array functions. |
+ // Please note we only return the optimized function iff |
+ // the JSObject has FastElements. |
+ if (object->IsJSObject() && JSObject::cast(*object)->HasFastElements()) { |
+ Object* opt = Top::LookupSpecialFunction(JSObject::cast(*object), |
+ lookup.holder(), |
+ JSFunction::cast(result)); |
+ if (opt->IsJSFunction()) return opt; |
+ } |
+ |
#ifdef ENABLE_DEBUGGER_SUPPORT |
// Handle stepping into a function if step into is active. |
if (Debug::StepInActive()) { |