MIPS: Refactoring PropertyCallbackInfo & FunctionCallbackInfo, step 1.
Port r16688 (fcae0bcf) Original commit message: The goal is to unify PropertyCallbackInfo and FunctionCallbackInfo so that they contain the same fields. The field order will be: holder isolate return value default value return value data this This step 1 reorders the PropertyCallbackInfo fields. BUG= R=gergely@homejinni.com Review URL: https://codereview.chromium.org/23513045 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16697 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
e9c4a49866
commit
617f7546a7
@ -777,16 +777,17 @@ static void PushInterceptorArguments(MacroAssembler* masm,
|
||||
Register holder,
|
||||
Register name,
|
||||
Handle<JSObject> holder_obj) {
|
||||
STATIC_ASSERT(StubCache::kInterceptorArgsNameIndex == 0);
|
||||
STATIC_ASSERT(StubCache::kInterceptorArgsInfoIndex == 1);
|
||||
STATIC_ASSERT(StubCache::kInterceptorArgsThisIndex == 2);
|
||||
STATIC_ASSERT(StubCache::kInterceptorArgsHolderIndex == 3);
|
||||
STATIC_ASSERT(StubCache::kInterceptorArgsLength == 4);
|
||||
__ push(name);
|
||||
Handle<InterceptorInfo> interceptor(holder_obj->GetNamedInterceptor());
|
||||
ASSERT(!masm->isolate()->heap()->InNewSpace(*interceptor));
|
||||
Register scratch = name;
|
||||
__ li(scratch, Operand(interceptor));
|
||||
__ Push(scratch, receiver, holder);
|
||||
__ lw(scratch, FieldMemOperand(scratch, InterceptorInfo::kDataOffset));
|
||||
__ push(scratch);
|
||||
__ li(scratch, Operand(ExternalReference::isolate_address(masm->isolate())));
|
||||
__ push(scratch);
|
||||
}
|
||||
|
||||
|
||||
@ -801,7 +802,7 @@ static void CompileCallLoadPropertyWithInterceptor(
|
||||
ExternalReference ref =
|
||||
ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorOnly),
|
||||
masm->isolate());
|
||||
__ PrepareCEntryArgs(6);
|
||||
__ PrepareCEntryArgs(StubCache::kInterceptorArgsLength);
|
||||
__ PrepareCEntryFunction(ref);
|
||||
|
||||
CEntryStub stub(1);
|
||||
@ -1107,7 +1108,7 @@ class CallInterceptorCompiler BASE_EMBEDDED {
|
||||
ExternalReference(
|
||||
IC_Utility(IC::kLoadPropertyWithInterceptorForCall),
|
||||
masm->isolate()),
|
||||
6);
|
||||
StubCache::kInterceptorArgsLength);
|
||||
// Restore the name_ register.
|
||||
__ pop(name_);
|
||||
// Leave the internal frame.
|
||||
@ -1415,6 +1416,15 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
|
||||
Handle<ExecutableAccessorInfo> callback) {
|
||||
// Build AccessorInfo::args_ list on the stack and push property name below
|
||||
// the exit frame to make GC aware of them and store pointers to them.
|
||||
STATIC_ASSERT(PropertyCallbackArguments::kThisIndex == 0);
|
||||
STATIC_ASSERT(PropertyCallbackArguments::kDataIndex == -1);
|
||||
STATIC_ASSERT(PropertyCallbackArguments::kReturnValueOffset == -2);
|
||||
STATIC_ASSERT(PropertyCallbackArguments::kReturnValueDefaultValueIndex == -3);
|
||||
STATIC_ASSERT(PropertyCallbackArguments::kIsolateIndex == -4);
|
||||
STATIC_ASSERT(PropertyCallbackArguments::kHolderIndex == -5);
|
||||
ASSERT(!scratch2().is(reg));
|
||||
ASSERT(!scratch3().is(reg));
|
||||
ASSERT(!scratch4().is(reg));
|
||||
__ push(receiver());
|
||||
__ mov(scratch2(), sp); // scratch2 = AccessorInfo::args_
|
||||
if (heap()->InNewSpace(callback->data())) {
|
||||
@ -1425,14 +1435,14 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
|
||||
__ li(scratch3(), Handle<Object>(callback->data(), isolate()));
|
||||
}
|
||||
__ Subu(sp, sp, 6 * kPointerSize);
|
||||
__ sw(reg, MemOperand(sp, 5 * kPointerSize));
|
||||
__ sw(scratch3(), MemOperand(sp, 4 * kPointerSize));
|
||||
__ sw(scratch3(), MemOperand(sp, 5 * kPointerSize));
|
||||
__ LoadRoot(scratch3(), Heap::kUndefinedValueRootIndex);
|
||||
__ sw(scratch3(), MemOperand(sp, 4 * kPointerSize));
|
||||
__ sw(scratch3(), MemOperand(sp, 3 * kPointerSize));
|
||||
__ sw(scratch3(), MemOperand(sp, 2 * kPointerSize));
|
||||
__ li(scratch4(),
|
||||
Operand(ExternalReference::isolate_address(isolate())));
|
||||
__ sw(scratch4(), MemOperand(sp, 1 * kPointerSize));
|
||||
__ sw(scratch4(), MemOperand(sp, 2 * kPointerSize));
|
||||
__ sw(reg, MemOperand(sp, 1 * kPointerSize));
|
||||
__ sw(name(), MemOperand(sp, 0 * kPointerSize));
|
||||
|
||||
__ mov(a2, scratch2()); // Saved in case scratch2 == a1.
|
||||
@ -1465,7 +1475,7 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
|
||||
thunk_ref,
|
||||
a2,
|
||||
kStackUnwindSpace,
|
||||
5);
|
||||
6);
|
||||
}
|
||||
|
||||
|
||||
@ -1550,7 +1560,7 @@ void BaseLoadStubCompiler::GenerateLoadInterceptor(
|
||||
|
||||
ExternalReference ref = ExternalReference(
|
||||
IC_Utility(IC::kLoadPropertyWithInterceptorForLoad), isolate());
|
||||
__ TailCallExternalReference(ref, 6, 1);
|
||||
__ TailCallExternalReference(ref, StubCache::kInterceptorArgsLength, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user