| Index: src/x64/stub-cache-x64.cc
 | 
| diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc
 | 
| index 8dab38e2932212ae27cd8662df2ea6a5c9a36b9e..67e2de6bad63dfc6b9b9f4543715d7ef6b44a793 100644
 | 
| --- a/src/x64/stub-cache-x64.cc
 | 
| +++ b/src/x64/stub-cache-x64.cc
 | 
| @@ -435,7 +435,7 @@ class LoadInterceptorCompiler BASE_EMBEDDED {
 | 
|                          LookupResult* lookup,
 | 
|                          String* name,
 | 
|                          Label* miss_label) {
 | 
| -    AccessorInfo* callback = 0;
 | 
| +    AccessorInfo* callback = NULL;
 | 
|      bool optimize = false;
 | 
|      // So far the most popular follow ups for interceptor loads are FIELD
 | 
|      // and CALLBACKS, so inline only them, other cases may be added
 | 
| @@ -559,7 +559,7 @@ class LoadInterceptorCompiler BASE_EMBEDDED {
 | 
|  class CallInterceptorCompiler BASE_EMBEDDED {
 | 
|   public:
 | 
|    CallInterceptorCompiler(const ParameterCount& arguments, Register name)
 | 
| -      : arguments_(arguments), argc_(arguments.immediate()), name_(name) {}
 | 
| +      : arguments_(arguments), name_(name) {}
 | 
|  
 | 
|    void CompileCacheable(MacroAssembler* masm,
 | 
|                          StubCompiler* stub_compiler,
 | 
| @@ -589,6 +589,8 @@ class CallInterceptorCompiler BASE_EMBEDDED {
 | 
|        return;
 | 
|      }
 | 
|  
 | 
| +    ASSERT(!lookup->holder()->IsGlobalObject());
 | 
| +
 | 
|      __ EnterInternalFrame();
 | 
|      __ push(holder);  // Save the holder.
 | 
|      __ push(name_);  // Save the name.
 | 
| @@ -612,22 +614,8 @@ class CallInterceptorCompiler BASE_EMBEDDED {
 | 
|                                     scratch2,
 | 
|                                     name,
 | 
|                                     miss_label);
 | 
| -    if (lookup->holder()->IsGlobalObject()) {
 | 
| -      __ movq(rdx, Operand(rsp, (argc_ + 1) * kPointerSize));
 | 
| -      __ movq(rdx, FieldOperand(rdx, GlobalObject::kGlobalReceiverOffset));
 | 
| -      __ movq(Operand(rsp, (argc_ + 1) * kPointerSize), rdx);
 | 
| -    }
 | 
|  
 | 
| -    ASSERT(function->is_compiled());
 | 
| -    // Get the function and setup the context.
 | 
| -    __ Move(rdi, Handle<JSFunction>(function));
 | 
| -    __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset));
 | 
| -
 | 
| -    // Jump to the cached code (tail call).
 | 
| -    Handle<Code> code(function->code());
 | 
| -    ParameterCount expected(function->shared()->formal_parameter_count());
 | 
| -    __ InvokeCode(code, expected, arguments_,
 | 
| -                  RelocInfo::CODE_TARGET, JUMP_FUNCTION);
 | 
| +    __ InvokeFunction(function, arguments_);
 | 
|  
 | 
|      __ bind(&invoke);
 | 
|    }
 | 
| @@ -648,13 +636,9 @@ class CallInterceptorCompiler BASE_EMBEDDED {
 | 
|                               name_,
 | 
|                               holder_obj);
 | 
|  
 | 
| -    ExternalReference ref = ExternalReference(
 | 
| -        IC_Utility(IC::kLoadPropertyWithInterceptorForCall));
 | 
| -    __ movq(rax, Immediate(5));
 | 
| -    __ movq(rbx, ref);
 | 
| -
 | 
| -    CEntryStub stub(1);
 | 
| -    __ CallStub(&stub);
 | 
| +    __ CallExternalReference(
 | 
| +        ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorForCall)),
 | 
| +        5);
 | 
|  
 | 
|      __ pop(name_);
 | 
|      __ LeaveInternalFrame();
 | 
| @@ -662,7 +646,6 @@ class CallInterceptorCompiler BASE_EMBEDDED {
 | 
|  
 | 
|   private:
 | 
|    const ParameterCount& arguments_;
 | 
| -  int argc_;
 | 
|    Register name_;
 | 
|  };
 | 
|  
 | 
| @@ -792,16 +775,7 @@ Object* CallStubCompiler::CompileCallConstant(Object* object,
 | 
|        UNREACHABLE();
 | 
|    }
 | 
|  
 | 
| -  // Get the function and setup the context.
 | 
| -  __ Move(rdi, Handle<JSFunction>(function));
 | 
| -  __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset));
 | 
| -
 | 
| -  // Jump to the cached code (tail call).
 | 
| -  ASSERT(function->is_compiled());
 | 
| -  Handle<Code> code(function->code());
 | 
| -  ParameterCount expected(function->shared()->formal_parameter_count());
 | 
| -  __ InvokeCode(code, expected, arguments(),
 | 
| -                RelocInfo::CODE_TARGET, JUMP_FUNCTION);
 | 
| +  __ InvokeFunction(function, arguments());
 | 
|  
 | 
|    // Handle call cache miss.
 | 
|    __ bind(&miss);
 | 
| 
 |