Index: src/arm/stub-cache-arm.cc |
diff --git a/src/arm/stub-cache-arm.cc b/src/arm/stub-cache-arm.cc |
index b2b1a928097210184c438683c44ee6d1448cbdd2..10ad143941964be47f7305e2d1fa85620a91ed8e 100644 |
--- a/src/arm/stub-cache-arm.cc |
+++ b/src/arm/stub-cache-arm.cc |
@@ -733,10 +733,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)); |
@@ -748,8 +748,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; |
@@ -864,14 +864,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())); |
@@ -972,9 +971,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()); |
@@ -987,10 +985,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()); |
} |
} |
@@ -1061,8 +1061,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. |
ASSERT(holder->IsJSGlobalProxy() || !holder->IsAccessCheckNeeded()); |
@@ -1147,8 +1146,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 are still the |
// same and no global property with this name contains a value. |
@@ -1236,25 +1235,25 @@ 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. |
- __ mov(r3, Operand(cell)); |
- __ ldr(r4, FieldMemOperand(r3, Cell::kValueOffset)); |
+ Register result = StoreIC::ValueRegister(); |
+ __ mov(result, Operand(cell)); |
+ __ ldr(result, FieldMemOperand(result, Cell::kValueOffset)); |
// Check for deleted property if property can actually be deleted. |
if (!is_dont_delete) { |
__ LoadRoot(ip, Heap::kTheHoleValueRootIndex); |
- __ cmp(r4, ip); |
+ __ cmp(result, ip); |
__ b(eq, &miss); |
} |
Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->named_load_global_stub(), 1, r1, r3); |
- __ mov(r0, r4); |
__ Ret(); |
FrontendFooter(name, &miss); |