| Index: src/mips64/stub-cache-mips64.cc | 
| diff --git a/src/mips64/stub-cache-mips64.cc b/src/mips64/stub-cache-mips64.cc | 
| index 2f3ba92abaf1832926def6207fe87c68837df7e1..0279a51c531e400418aaa099bd0b34c90d1b21b5 100644 | 
| --- a/src/mips64/stub-cache-mips64.cc | 
| +++ b/src/mips64/stub-cache-mips64.cc | 
| @@ -726,10 +726,10 @@ void PropertyAccessCompiler::GenerateTailCall(MacroAssembler* masm, | 
|  | 
|  | 
| Register PropertyHandlerCompiler::CheckPrototypes( | 
| -    Handle<HeapType> type, Register object_reg, Handle<JSObject> holder, | 
| -    Register holder_reg, Register scratch1, Register scratch2, | 
| -    Handle<Name> name, Label* miss, PrototypeCheckType check) { | 
| -  Handle<Map> receiver_map(IC::TypeToMap(*type, isolate())); | 
| +    Register object_reg, Handle<JSObject> holder, Register holder_reg, | 
| +    Register scratch1, Register scratch2, Handle<Name> name, Label* miss, | 
| +    PrototypeCheckType check) { | 
| +  Handle<Map> receiver_map(IC::TypeToMap(*type(), isolate())); | 
|  | 
| // Make sure there's no overlap between holder and object registers. | 
| ASSERT(!scratch1.is(object_reg) && !scratch1.is(holder_reg)); | 
| @@ -741,8 +741,8 @@ Register PropertyHandlerCompiler::CheckPrototypes( | 
| int depth = 0; | 
|  | 
| Handle<JSObject> current = Handle<JSObject>::null(); | 
| -  if (type->IsConstant()) { | 
| -    current = Handle<JSObject>::cast(type->AsConstant()->Value()); | 
| +  if (type()->IsConstant()) { | 
| +    current = Handle<JSObject>::cast(type()->AsConstant()->Value()); | 
| } | 
| Handle<JSObject> prototype = Handle<JSObject>::null(); | 
| Handle<Map> current_map = receiver_map; | 
| @@ -857,14 +857,13 @@ void NamedStoreHandlerCompiler::FrontendFooter(Handle<Name> name, Label* miss) { | 
| } | 
|  | 
|  | 
| -Register NamedLoadHandlerCompiler::CallbackFrontend(Handle<HeapType> type, | 
| -                                                    Register object_reg, | 
| +Register NamedLoadHandlerCompiler::CallbackFrontend(Register object_reg, | 
| Handle<JSObject> holder, | 
| Handle<Name> name, | 
| Handle<Object> callback) { | 
| Label miss; | 
|  | 
| -  Register reg = FrontendHeader(type, object_reg, holder, name, &miss); | 
| +  Register reg = FrontendHeader(object_reg, holder, name, &miss); | 
|  | 
| if (!holder->HasFastProperties() && !holder->IsJSGlobalObject()) { | 
| ASSERT(!reg.is(scratch2())); | 
| @@ -967,9 +966,8 @@ void NamedLoadHandlerCompiler::GenerateLoadCallback( | 
|  | 
|  | 
| void NamedLoadHandlerCompiler::GenerateLoadInterceptor( | 
| -    Register holder_reg, Handle<Object> object, | 
| -    Handle<JSObject> interceptor_holder, LookupResult* lookup, | 
| -    Handle<Name> name) { | 
| +    Register holder_reg, Handle<JSObject> interceptor_holder, | 
| +    LookupResult* lookup, Handle<Name> name) { | 
| ASSERT(interceptor_holder->HasNamedInterceptor()); | 
| ASSERT(!interceptor_holder->GetNamedInterceptor()->getter()->IsUndefined()); | 
|  | 
| @@ -982,10 +980,12 @@ void NamedLoadHandlerCompiler::GenerateLoadInterceptor( | 
| compile_followup_inline = true; | 
| } else if (lookup->type() == CALLBACKS && | 
| lookup->GetCallbackObject()->IsExecutableAccessorInfo()) { | 
| -      ExecutableAccessorInfo* callback = | 
| -          ExecutableAccessorInfo::cast(lookup->GetCallbackObject()); | 
| -      compile_followup_inline = callback->getter() != NULL && | 
| -          callback->IsCompatibleReceiver(*object); | 
| +      Handle<ExecutableAccessorInfo> callback( | 
| +          ExecutableAccessorInfo::cast(lookup->GetCallbackObject())); | 
| +      compile_followup_inline = | 
| +          callback->getter() != NULL && | 
| +          ExecutableAccessorInfo::IsCompatibleReceiverType(isolate(), callback, | 
| +                                                           type()); | 
| } | 
| } | 
|  | 
| @@ -1053,8 +1053,7 @@ void NamedLoadHandlerCompiler::GenerateLoadInterceptor( | 
| Handle<Code> NamedStoreHandlerCompiler::CompileStoreCallback( | 
| Handle<JSObject> object, Handle<JSObject> holder, Handle<Name> name, | 
| Handle<ExecutableAccessorInfo> callback) { | 
| -  Register holder_reg = | 
| -      Frontend(IC::CurrentTypeOf(object, isolate()), receiver(), holder, name); | 
| +  Register holder_reg = Frontend(receiver(), holder, name); | 
|  | 
| // Stub never generated for non-global objects that require access | 
| // checks. | 
| @@ -1139,8 +1138,8 @@ Handle<Code> NamedStoreHandlerCompiler::CompileStoreInterceptor( | 
|  | 
|  | 
| Handle<Code> NamedLoadHandlerCompiler::CompileLoadNonexistent( | 
| -    Handle<HeapType> type, Handle<JSObject> last, Handle<Name> name) { | 
| -  NonexistentFrontend(type, last, name); | 
| +    Handle<JSObject> last, Handle<Name> name) { | 
| +  NonexistentFrontend(last, name); | 
|  | 
| // Return undefined if maps of the full prototype chain is still the same. | 
| __ LoadRoot(v0, Heap::kUndefinedValueRootIndex); | 
| @@ -1227,26 +1226,27 @@ void NamedLoadHandlerCompiler::GenerateLoadViaGetter( | 
|  | 
|  | 
| Handle<Code> NamedLoadHandlerCompiler::CompileLoadGlobal( | 
| -    Handle<HeapType> type, Handle<GlobalObject> global, | 
| -    Handle<PropertyCell> cell, Handle<Name> name, bool is_dont_delete) { | 
| +    Handle<GlobalObject> global, Handle<PropertyCell> cell, Handle<Name> name, | 
| +    bool is_dont_delete) { | 
| Label miss; | 
|  | 
| -  FrontendHeader(type, receiver(), global, name, &miss); | 
| +  FrontendHeader(receiver(), global, name, &miss); | 
|  | 
| // Get the value from the cell. | 
| -  __ li(a3, Operand(cell)); | 
| -  __ ld(a4, FieldMemOperand(a3, Cell::kValueOffset)); | 
| +  Register result = StoreIC::ValueRegister(); | 
| +  __ li(result, Operand(cell)); | 
| +  __ ld(result, FieldMemOperand(result, Cell::kValueOffset)); | 
|  | 
| // Check for deleted property if property can actually be deleted. | 
| if (!is_dont_delete) { | 
| __ LoadRoot(at, Heap::kTheHoleValueRootIndex); | 
| -    __ Branch(&miss, eq, a4, Operand(at)); | 
| +    __ Branch(&miss, eq, result, Operand(at)); | 
| } | 
|  | 
| Counters* counters = isolate()->counters(); | 
| __ IncrementCounter(counters->named_load_global_stub(), 1, a1, a3); | 
| __ Ret(USE_DELAY_SLOT); | 
| -  __ mov(v0, a4); | 
| +  __ mov(v0, result); | 
|  | 
| FrontendFooter(name, &miss); | 
|  | 
|  |