| Index: src/x64/code-stubs-x64.cc | 
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc | 
| index 5041d9424231961aa909bcddc5490eccc62d0924..2ba95bfb2780d00a8bb9111205934b40f6964f15 100644 | 
| --- a/src/x64/code-stubs-x64.cc | 
| +++ b/src/x64/code-stubs-x64.cc | 
| @@ -2255,11 +2255,15 @@ void CallIC_ArrayStub::Generate(MacroAssembler* masm) { | 
| __ j(not_equal, &miss); | 
|  | 
| __ movp(rax, Immediate(arg_count())); | 
| -  __ movp(rbx, FieldOperand(rbx, rdx, times_pointer_size, | 
| +  __ movp(rcx, FieldOperand(rbx, rdx, times_pointer_size, | 
| FixedArray::kHeaderSize)); | 
| - | 
| // Verify that ecx contains an AllocationSite | 
| -  __ AssertUndefinedOrAllocationSite(rbx); | 
| +  Factory* factory = masm->isolate()->factory(); | 
| +  __ Cmp(FieldOperand(rcx, HeapObject::kMapOffset), | 
| +         factory->allocation_site_map()); | 
| +  __ j(not_equal, &miss); | 
| + | 
| +  __ movp(rbx, rcx); | 
| ArrayConstructorStub stub(masm->isolate(), arg_count()); | 
| __ TailCallStub(&stub); | 
|  | 
| @@ -2333,7 +2337,11 @@ void CallICStub::Generate(MacroAssembler* masm) { | 
| __ j(equal, &miss); | 
|  | 
| if (!FLAG_trace_ic) { | 
| -    // We are going megamorphic, and we don't want to visit the runtime. | 
| +    // We are going megamorphic. If the feedback is a JSFunction, it is fine | 
| +    // to handle it here. More complex cases are dealt with in the runtime. | 
| +    __ AssertNotSmi(rcx); | 
| +    __ CmpObjectType(rcx, JS_FUNCTION_TYPE, rcx); | 
| +    __ j(not_equal, &miss); | 
| __ Move(FieldOperand(rbx, rdx, times_pointer_size, | 
| FixedArray::kHeaderSize), | 
| TypeFeedbackInfo::MegamorphicSentinel(isolate)); | 
|  |