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 <last...@yahoo.com> wrote: > From: x yz <last...@yahoo.com> > Subject: Re: [webkit-dev] want to port JIT to MIPS - which calling convention > is used here? > To: webkit-dev@lists.webkit.org, "Zoltan Herczeg" <zherc...@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@lists.webkit.org > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev