| Index: src/ic/mips64/handler-compiler-mips64.cc
 | 
| diff --git a/src/ic/mips64/handler-compiler-mips64.cc b/src/ic/mips64/handler-compiler-mips64.cc
 | 
| index df87625e56a85473d1cf84d586d4e9864c068665..1390a4563f6665e546546de3db5729c3412386d7 100644
 | 
| --- a/src/ic/mips64/handler-compiler-mips64.cc
 | 
| +++ b/src/ic/mips64/handler-compiler-mips64.cc
 | 
| @@ -92,6 +92,26 @@ void NamedStoreHandlerCompiler::GenerateStoreViaSetter(
 | 
|  }
 | 
|  
 | 
|  
 | 
| +void PropertyHandlerCompiler::PushVectorAndSlot(Register vector,
 | 
| +                                                Register slot) {
 | 
| +  MacroAssembler* masm = this->masm();
 | 
| +  __ Push(vector, slot);
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void PropertyHandlerCompiler::PopVectorAndSlot(Register vector, Register slot) {
 | 
| +  MacroAssembler* masm = this->masm();
 | 
| +  __ Pop(vector, slot);
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void PropertyHandlerCompiler::DiscardVectorAndSlot() {
 | 
| +  MacroAssembler* masm = this->masm();
 | 
| +  // Remove vector and slot.
 | 
| +  __ Daddu(sp, sp, Operand(2 * kPointerSize));
 | 
| +}
 | 
| +
 | 
| +
 | 
|  void PropertyHandlerCompiler::GenerateDictionaryNegativeLookup(
 | 
|      MacroAssembler* masm, Label* miss_label, Register receiver,
 | 
|      Handle<Name> name, Register scratch0, Register scratch1) {
 | 
| @@ -482,6 +502,10 @@ void NamedLoadHandlerCompiler::FrontendFooter(Handle<Name> name, Label* miss) {
 | 
|      Label success;
 | 
|      __ Branch(&success);
 | 
|      __ bind(miss);
 | 
| +    if (IC::ICUseVector(kind())) {
 | 
| +      DCHECK(kind() == Code::LOAD_IC);
 | 
| +      PopVectorAndSlot();
 | 
| +    }
 | 
|      TailCallBuiltin(masm(), MissBuiltin(kind()));
 | 
|      __ bind(&success);
 | 
|    }
 | 
| @@ -583,6 +607,7 @@ void NamedLoadHandlerCompiler::GenerateLoadInterceptorWithFollowup(
 | 
|      } else {
 | 
|        __ Push(holder_reg, this->name());
 | 
|      }
 | 
| +    InterceptorVectorSlotPush(holder_reg);
 | 
|      // Invoke an interceptor.  Note: map checks from receiver to
 | 
|      // interceptor's holder has been compiled before (see a caller
 | 
|      // of this method).
 | 
| @@ -599,6 +624,7 @@ void NamedLoadHandlerCompiler::GenerateLoadInterceptorWithFollowup(
 | 
|      __ Ret();
 | 
|  
 | 
|      __ bind(&interceptor_failed);
 | 
| +    InterceptorVectorSlotPop(holder_reg);
 | 
|      if (must_preserve_receiver_reg) {
 | 
|        __ Pop(receiver(), holder_reg, this->name());
 | 
|      } else {
 | 
| @@ -628,7 +654,7 @@ void NamedLoadHandlerCompiler::GenerateLoadInterceptor(Register holder_reg) {
 | 
|  Handle<Code> NamedStoreHandlerCompiler::CompileStoreCallback(
 | 
|      Handle<JSObject> object, Handle<Name> name,
 | 
|      Handle<ExecutableAccessorInfo> callback) {
 | 
| -  Register holder_reg = Frontend(receiver(), name);
 | 
| +  Register holder_reg = Frontend(name);
 | 
|  
 | 
|    __ Push(receiver(), holder_reg);  // Receiver.
 | 
|    __ li(at, Operand(callback));     // Callback info.
 | 
| @@ -668,6 +694,9 @@ Register NamedStoreHandlerCompiler::value() {
 | 
|  Handle<Code> NamedLoadHandlerCompiler::CompileLoadGlobal(
 | 
|      Handle<PropertyCell> cell, Handle<Name> name, bool is_configurable) {
 | 
|    Label miss;
 | 
| +  if (IC::ICUseVector(kind())) {
 | 
| +    PushVectorAndSlot();
 | 
| +  }
 | 
|  
 | 
|    FrontendHeader(receiver(), name, &miss);
 | 
|  
 | 
| @@ -684,6 +713,9 @@ Handle<Code> NamedLoadHandlerCompiler::CompileLoadGlobal(
 | 
|  
 | 
|    Counters* counters = isolate()->counters();
 | 
|    __ IncrementCounter(counters->named_load_global_stub(), 1, a1, a3);
 | 
| +  if (IC::ICUseVector(kind())) {
 | 
| +    DiscardVectorAndSlot();
 | 
| +  }
 | 
|    __ Ret(USE_DELAY_SLOT);
 | 
|    __ mov(v0, result);
 | 
|  
 | 
| 
 |