| Index: src/x64/code-stubs-x64.cc | 
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc | 
| index db9cc7c8fdca5ccfe0c89df70ed7546ea39d4a3a..731cb04d640d4eb6e4f294210939ed3b3b88e685 100644 | 
| --- a/src/x64/code-stubs-x64.cc | 
| +++ b/src/x64/code-stubs-x64.cc | 
| @@ -1753,11 +1753,9 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) { | 
| } | 
|  | 
|  | 
| -static void CallStubInRecordCallTarget(MacroAssembler* masm, CodeStub* stub, | 
| -                                       bool is_super) { | 
| +static void CallStubInRecordCallTarget(MacroAssembler* masm, CodeStub* stub) { | 
| // rax : number of arguments to the construct function | 
| // rbx : feedback vector | 
| -  // rcx : new target (for IsSuperConstructorCall) | 
| // rdx : slot in feedback vector (Smi) | 
| // rdi : the function to call | 
| FrameScope scope(masm, StackFrame::INTERNAL); | 
| @@ -1769,15 +1767,9 @@ static void CallStubInRecordCallTarget(MacroAssembler* masm, CodeStub* stub, | 
| __ Integer32ToSmi(rdx, rdx); | 
| __ Push(rdx); | 
| __ Push(rbx); | 
| -  if (is_super) { | 
| -    __ Push(rcx); | 
| -  } | 
|  | 
| __ CallStub(stub); | 
|  | 
| -  if (is_super) { | 
| -    __ Pop(rcx); | 
| -  } | 
| __ Pop(rbx); | 
| __ Pop(rdx); | 
| __ Pop(rdi); | 
| @@ -1786,13 +1778,12 @@ static void CallStubInRecordCallTarget(MacroAssembler* masm, CodeStub* stub, | 
| } | 
|  | 
|  | 
| -static void GenerateRecordCallTarget(MacroAssembler* masm, bool is_super) { | 
| +static void GenerateRecordCallTarget(MacroAssembler* masm) { | 
| // Cache the called function in a feedback vector slot.  Cache states | 
| // are uninitialized, monomorphic (indicated by a JSFunction), and | 
| // megamorphic. | 
| // rax : number of arguments to the construct function | 
| // rbx : feedback vector | 
| -  // rcx : new target (for IsSuperConstructorCall) | 
| // rdx : slot in feedback vector (Smi) | 
| // rdi : the function to call | 
| Isolate* isolate = masm->isolate(); | 
| @@ -1860,12 +1851,12 @@ static void GenerateRecordCallTarget(MacroAssembler* masm, bool is_super) { | 
| __ j(not_equal, ¬_array_function); | 
|  | 
| CreateAllocationSiteStub create_stub(isolate); | 
| -  CallStubInRecordCallTarget(masm, &create_stub, is_super); | 
| +  CallStubInRecordCallTarget(masm, &create_stub); | 
| __ jmp(&done_no_smi_convert); | 
|  | 
| __ bind(¬_array_function); | 
| CreateWeakCellStub weak_cell_stub(isolate); | 
| -  CallStubInRecordCallTarget(masm, &weak_cell_stub, is_super); | 
| +  CallStubInRecordCallTarget(masm, &weak_cell_stub); | 
| __ jmp(&done_no_smi_convert); | 
|  | 
| __ bind(&done); | 
| @@ -1878,8 +1869,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm, bool is_super) { | 
| void CallConstructStub::Generate(MacroAssembler* masm) { | 
| // rax : number of arguments | 
| // rbx : feedback vector | 
| -  // rcx : new target (for IsSuperConstructorCall) | 
| -  // rdx : slot in feedback vector (Smi, for RecordCallTarget) | 
| +  // rdx : slot in feedback vector (Smi) | 
| // rdi : constructor function | 
|  | 
| Label non_function; | 
| @@ -1889,28 +1879,22 @@ void CallConstructStub::Generate(MacroAssembler* masm) { | 
| __ CmpObjectType(rdi, JS_FUNCTION_TYPE, r11); | 
| __ j(not_equal, &non_function); | 
|  | 
| -  if (RecordCallTarget()) { | 
| -    GenerateRecordCallTarget(masm, IsSuperConstructorCall()); | 
| +  GenerateRecordCallTarget(masm); | 
|  | 
| -    __ SmiToInteger32(rdx, rdx); | 
| -    Label feedback_register_initialized; | 
| -    // Put the AllocationSite from the feedback vector into rbx, or undefined. | 
| -    __ movp(rbx, FieldOperand(rbx, rdx, times_pointer_size, | 
| -                              FixedArray::kHeaderSize)); | 
| -    __ CompareRoot(FieldOperand(rbx, 0), Heap::kAllocationSiteMapRootIndex); | 
| -    __ j(equal, &feedback_register_initialized); | 
| -    __ LoadRoot(rbx, Heap::kUndefinedValueRootIndex); | 
| -    __ bind(&feedback_register_initialized); | 
| +  __ SmiToInteger32(rdx, rdx); | 
| +  Label feedback_register_initialized; | 
| +  // Put the AllocationSite from the feedback vector into rbx, or undefined. | 
| +  __ movp(rbx, | 
| +          FieldOperand(rbx, rdx, times_pointer_size, FixedArray::kHeaderSize)); | 
| +  __ CompareRoot(FieldOperand(rbx, 0), Heap::kAllocationSiteMapRootIndex); | 
| +  __ j(equal, &feedback_register_initialized, Label::kNear); | 
| +  __ LoadRoot(rbx, Heap::kUndefinedValueRootIndex); | 
| +  __ bind(&feedback_register_initialized); | 
|  | 
| -    __ AssertUndefinedOrAllocationSite(rbx); | 
| -  } | 
| +  __ AssertUndefinedOrAllocationSite(rbx); | 
|  | 
| // Pass new target to construct stub. | 
| -  if (IsSuperConstructorCall()) { | 
| -    __ movp(rdx, rcx); | 
| -  } else { | 
| -    __ movp(rdx, rdi); | 
| -  } | 
| +  __ movp(rdx, rdi); | 
|  | 
| // Tail call to the function-specific construct stub (still in the caller | 
| // context at this point). | 
|  |