[webkit-dev] want to port JIT to MIPS - JIT reg usage clean up?
x yz
lastguy at yahoo.com
Fri Feb 27 16:55:02 PST 2009
Hi,
Still in JITPropertyAccess.cpp, may I expect some clean up on reg usage to easy porting?
loadPtr(Address(regT2, FIELD_OFFSET(Structure, m_prototype)), regT2);
}
successCases.link(this);
Call callTarget;
// emit a call only if storage realloc is needed
if (transitionWillNeedStorageRealloc(oldStructure, newStructure)) {
pop(X86::ebx);
#if PLATFORM(X86_64) ///
move(Imm32(newStructure->propertyStorageCapacity()), regT1);
move(Imm32(oldStructure->propertyStorageCapacity()), X86::esi);
move(regT0, X86::edi);
callTarget = call();
#elif PLATFORM(MIPS)
move(Imm32(newStructure->propertyStorageCapacity()), regT2);
move(Imm32(oldStructure->propertyStorageCapacity()), regT1);
callTarget = call();
#else ///__cdel
push(Imm32(newStructure->propertyStorageCapacity()));
push(Imm32(oldStructure->propertyStorageCapacity()));
push(regT0);
callTarget = call();
addPtr(Imm32(3 * sizeof(void*)), X86::esp); ///clean stack
#endif
The regTx seems to be working registers here, yet their definition are regparm(3) registers for function arugments. Such usage would cause conflict on other platforms. May I suggest that we use individual defined set of regs for func i/o argument and working?
we would put all these definition in a file named regMap.h, then we can remove all "X86::" from other JIT files.
I'd apperciate if sb can do it or help me to do it.
rgds
joe
--- On Sat, 2/28/09, x yz <lastguy at yahoo.com> wrote:
> From: x yz <lastguy at yahoo.com>
> Subject: Re: [webkit-dev] want to port JIT to MIPS - which calling convention is used here?
> To: webkit-dev at lists.webkit.org, "Zoltan Herczeg" <zherczeg at inf.u-szeged.hu>
> Date: Saturday, February 28, 2009, 7:40 AM
> Hi,
> Thanks for your help in advance:)
> in JITPropertyAccess.cpp:
> if (transitionWillNeedStorageRealloc(oldStructure,
> newStructure)) {
> pop(X86::ebx); ///pop return address, why? for
> exception?
> #if PLATFORM(X86_64) ///which convention is this?
>
> move(Imm32(newStructure->propertyStorageCapacity()),
> regT1); //edx
>
> move(Imm32(oldStructure->propertyStorageCapacity()),
> X86::esi);
> move(regT0, X86::edi);
> callTarget = call();
> #else ///__cdecl, yet how can I know
> resizePropertyStorage() use __cdecl?
>
> push(Imm32(newStructure->propertyStorageCapacity()));
>
> push(Imm32(oldStructure->propertyStorageCapacity()));
> push(regT0);
> callTarget = call();
> addPtr(Imm32(3 * sizeof(void*)), X86::esp);
> ///clean stack
> #endif
>
>
>
>
>
>
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
More information about the webkit-dev
mailing list