Store lookup index in ARM stubs as well (see r2093 and 2094 for more info).
Review URL: http://codereview.chromium.org/118163 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2099 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
34de62698c
commit
250081d671
@ -246,6 +246,7 @@ void StubCompiler::GenerateLoadCallback(MacroAssembler* masm,
|
||||
void StubCompiler::GenerateLoadInterceptor(MacroAssembler* masm,
|
||||
JSObject* object,
|
||||
JSObject* holder,
|
||||
Smi* lookup_hint,
|
||||
Register receiver,
|
||||
Register name,
|
||||
Register scratch1,
|
||||
@ -263,11 +264,13 @@ void StubCompiler::GenerateLoadInterceptor(MacroAssembler* masm,
|
||||
__ push(receiver); // receiver
|
||||
__ push(reg); // holder
|
||||
__ push(name); // name
|
||||
__ mov(scratch1, Operand(lookup_hint));
|
||||
__ push(scratch1);
|
||||
|
||||
// Do tail-call to the runtime system.
|
||||
ExternalReference load_ic_property =
|
||||
ExternalReference(IC_Utility(IC::kLoadInterceptorProperty));
|
||||
__ TailCallRuntime(load_ic_property, 3);
|
||||
__ TailCallRuntime(load_ic_property, 4);
|
||||
}
|
||||
|
||||
|
||||
@ -909,7 +912,15 @@ Object* LoadStubCompiler::CompileLoadInterceptor(JSObject* object,
|
||||
|
||||
__ ldr(r0, MemOperand(sp, 0));
|
||||
|
||||
GenerateLoadInterceptor(masm(), object, holder, r0, r2, r3, r1, &miss);
|
||||
GenerateLoadInterceptor(masm(),
|
||||
object,
|
||||
holder,
|
||||
holder->InterceptorPropertyLookupHint(name),
|
||||
r0,
|
||||
r2,
|
||||
r3,
|
||||
r1,
|
||||
&miss);
|
||||
__ bind(&miss);
|
||||
GenerateLoadMiss(masm(), Code::LOAD_IC);
|
||||
|
||||
@ -1015,7 +1026,15 @@ Object* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
|
||||
__ cmp(r2, Operand(Handle<String>(name)));
|
||||
__ b(ne, &miss);
|
||||
|
||||
GenerateLoadInterceptor(masm(), receiver, holder, r0, r2, r3, r1, &miss);
|
||||
GenerateLoadInterceptor(masm(),
|
||||
receiver,
|
||||
holder,
|
||||
Smi::FromInt(JSObject::kLookupInHolder),
|
||||
r0,
|
||||
r2,
|
||||
r3,
|
||||
r1,
|
||||
&miss);
|
||||
__ bind(&miss);
|
||||
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
|
||||
|
||||
|
@ -319,25 +319,6 @@ void StubCompiler::GenerateLoadConstant(MacroAssembler* masm,
|
||||
}
|
||||
|
||||
|
||||
void StubCompiler::GenerateLoadInterceptor(MacroAssembler* masm,
|
||||
JSObject* object,
|
||||
JSObject* holder,
|
||||
Register receiver,
|
||||
Register name,
|
||||
Register scratch1,
|
||||
Register scratch2,
|
||||
Label* miss_label) {
|
||||
GenerateLoadInterceptor(masm,
|
||||
object,
|
||||
holder,
|
||||
Smi::FromInt(JSObject::kLookupInHolder),
|
||||
receiver,
|
||||
name,
|
||||
scratch1,
|
||||
scratch2,
|
||||
miss_label);
|
||||
}
|
||||
|
||||
void StubCompiler::GenerateLoadInterceptor(MacroAssembler* masm,
|
||||
JSObject* object,
|
||||
JSObject* holder,
|
||||
@ -1124,7 +1105,15 @@ Object* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver,
|
||||
__ cmp(Operand(eax), Immediate(Handle<String>(name)));
|
||||
__ j(not_equal, &miss, not_taken);
|
||||
|
||||
GenerateLoadInterceptor(masm(), receiver, holder, ecx, eax, edx, ebx, &miss);
|
||||
GenerateLoadInterceptor(masm(),
|
||||
receiver,
|
||||
holder,
|
||||
Smi::FromInt(JSObject::kLookupInHolder),
|
||||
ecx,
|
||||
eax,
|
||||
edx,
|
||||
ebx,
|
||||
&miss);
|
||||
__ bind(&miss);
|
||||
__ DecrementCounter(&Counters::keyed_load_interceptor, 1);
|
||||
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
|
||||
|
@ -348,15 +348,6 @@ class StubCompiler BASE_EMBEDDED {
|
||||
Register scratch2,
|
||||
Object* value,
|
||||
Label* miss_label);
|
||||
static void GenerateLoadInterceptor(MacroAssembler* masm,
|
||||
JSObject* object,
|
||||
JSObject* holder,
|
||||
Register receiver,
|
||||
Register name,
|
||||
Register scratch1,
|
||||
Register scratch2,
|
||||
Label* miss_label);
|
||||
// TODO(antonm): Remove a function above.
|
||||
static void GenerateLoadInterceptor(MacroAssembler* masm,
|
||||
JSObject* object,
|
||||
JSObject* holder,
|
||||
|
Loading…
Reference in New Issue
Block a user