Commit 617f7546 authored by palfia@homejinni.com's avatar palfia@homejinni.com

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
parent e9c4a498
...@@ -777,16 +777,17 @@ static void PushInterceptorArguments(MacroAssembler* masm, ...@@ -777,16 +777,17 @@ static void PushInterceptorArguments(MacroAssembler* masm,
Register holder, Register holder,
Register name, Register name,
Handle<JSObject> holder_obj) { 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); __ push(name);
Handle<InterceptorInfo> interceptor(holder_obj->GetNamedInterceptor()); Handle<InterceptorInfo> interceptor(holder_obj->GetNamedInterceptor());
ASSERT(!masm->isolate()->heap()->InNewSpace(*interceptor)); ASSERT(!masm->isolate()->heap()->InNewSpace(*interceptor));
Register scratch = name; Register scratch = name;
__ li(scratch, Operand(interceptor)); __ li(scratch, Operand(interceptor));
__ Push(scratch, receiver, holder); __ 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( ...@@ -801,7 +802,7 @@ static void CompileCallLoadPropertyWithInterceptor(
ExternalReference ref = ExternalReference ref =
ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorOnly), ExternalReference(IC_Utility(IC::kLoadPropertyWithInterceptorOnly),
masm->isolate()); masm->isolate());
__ PrepareCEntryArgs(6); __ PrepareCEntryArgs(StubCache::kInterceptorArgsLength);
__ PrepareCEntryFunction(ref); __ PrepareCEntryFunction(ref);
CEntryStub stub(1); CEntryStub stub(1);
...@@ -1107,7 +1108,7 @@ class CallInterceptorCompiler BASE_EMBEDDED { ...@@ -1107,7 +1108,7 @@ class CallInterceptorCompiler BASE_EMBEDDED {
ExternalReference( ExternalReference(
IC_Utility(IC::kLoadPropertyWithInterceptorForCall), IC_Utility(IC::kLoadPropertyWithInterceptorForCall),
masm->isolate()), masm->isolate()),
6); StubCache::kInterceptorArgsLength);
// Restore the name_ register. // Restore the name_ register.
__ pop(name_); __ pop(name_);
// Leave the internal frame. // Leave the internal frame.
...@@ -1415,6 +1416,15 @@ void BaseLoadStubCompiler::GenerateLoadCallback( ...@@ -1415,6 +1416,15 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
Handle<ExecutableAccessorInfo> callback) { Handle<ExecutableAccessorInfo> callback) {
// Build AccessorInfo::args_ list on the stack and push property name below // 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. // 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()); __ push(receiver());
__ mov(scratch2(), sp); // scratch2 = AccessorInfo::args_ __ mov(scratch2(), sp); // scratch2 = AccessorInfo::args_
if (heap()->InNewSpace(callback->data())) { if (heap()->InNewSpace(callback->data())) {
...@@ -1425,14 +1435,14 @@ void BaseLoadStubCompiler::GenerateLoadCallback( ...@@ -1425,14 +1435,14 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
__ li(scratch3(), Handle<Object>(callback->data(), isolate())); __ li(scratch3(), Handle<Object>(callback->data(), isolate()));
} }
__ Subu(sp, sp, 6 * kPointerSize); __ Subu(sp, sp, 6 * kPointerSize);
__ sw(reg, MemOperand(sp, 5 * kPointerSize)); __ sw(scratch3(), MemOperand(sp, 5 * kPointerSize));
__ sw(scratch3(), MemOperand(sp, 4 * kPointerSize));
__ LoadRoot(scratch3(), Heap::kUndefinedValueRootIndex); __ LoadRoot(scratch3(), Heap::kUndefinedValueRootIndex);
__ sw(scratch3(), MemOperand(sp, 4 * kPointerSize));
__ sw(scratch3(), MemOperand(sp, 3 * kPointerSize)); __ sw(scratch3(), MemOperand(sp, 3 * kPointerSize));
__ sw(scratch3(), MemOperand(sp, 2 * kPointerSize));
__ li(scratch4(), __ li(scratch4(),
Operand(ExternalReference::isolate_address(isolate()))); 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)); __ sw(name(), MemOperand(sp, 0 * kPointerSize));
__ mov(a2, scratch2()); // Saved in case scratch2 == a1. __ mov(a2, scratch2()); // Saved in case scratch2 == a1.
...@@ -1465,7 +1475,7 @@ void BaseLoadStubCompiler::GenerateLoadCallback( ...@@ -1465,7 +1475,7 @@ void BaseLoadStubCompiler::GenerateLoadCallback(
thunk_ref, thunk_ref,
a2, a2,
kStackUnwindSpace, kStackUnwindSpace,
5); 6);
} }
...@@ -1550,7 +1560,7 @@ void BaseLoadStubCompiler::GenerateLoadInterceptor( ...@@ -1550,7 +1560,7 @@ void BaseLoadStubCompiler::GenerateLoadInterceptor(
ExternalReference ref = ExternalReference( ExternalReference ref = ExternalReference(
IC_Utility(IC::kLoadPropertyWithInterceptorForLoad), isolate()); IC_Utility(IC::kLoadPropertyWithInterceptorForLoad), isolate());
__ TailCallExternalReference(ref, 6, 1); __ TailCallExternalReference(ref, StubCache::kInterceptorArgsLength, 1);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment