[webkit-dev] want to port JIT to MIPS - how to get of SSE2 now?

x yz lastguy at yahoo.com
Thu Feb 26 17:39:34 PST 2009


yes but if isSSE2Present() returns false the code becomes very simple so I doubt it may be slow.
what's the benefit to enable/disable ALTERNATE_JSIMMEDIATE?
thanks
joe



--- On Fri, 2/27/09, Gavin Barraclough <barraclough at apple.com> wrote:

> From: Gavin Barraclough <barraclough at apple.com>
> Subject: Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now?
> To: "WebKit Development" <webkit-dev at lists.webkit.org>
> Date: Friday, February 27, 2009, 6:03 AM
> SSE2 code generation is guarded by calls to a function  
> 'isSSE2Present()'.
> 
> On Feb 26, 2009, at 12:27 PM, x yz wrote:
> 
> >
> > Hi,
> > Old version seems use ENABLE_JIT_OPTIMIZE_ARITHMETIC
> to enable sse2  
> > and only for X86_64, current version changes conf to:
> > 1. you must ENABLE_JIT_OPTIMIZE_ARITHMETIC or else you
> use  
> > interpreter for arithmatic.
> > 2. if ALTERNATE_JSIMMEDIATE not enabled you must have
> sse2 engine
> > 3. if ALTERNATE_JSIMMEDIATE enabled, you use mmx
> arithematic, but  
> > ALTERNATE_JSIMMEDIATE is enabled in paltform.h only
> for X86_64 &&  
> > MAC. That means on X86 you need sse2???
> > thanks for your time!
> > joe
> >
> >
> >
> > --- On Sun, 2/22/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
> >> To: "WebKit Development"
> <webkit-dev at lists.webkit.org>, "Gavin  
> >> Barraclough" <barraclough at apple.com>
> >> Date: Sunday, February 22, 2009, 4:34 PM
> >> Thanks a lot otherwise I have misunderstanding.
> Yes I'll
> >> do wrec first. I just want to clean up possible
> blocking
> >> issues.
> >>
> >> I see wrec uses regparm(3) and jit always use
> fastcall for
> >> X86?
> >> In JIT.cpp ctiTrampoline put CallFrame in edi, but
> how
> >> about other arguments - where are they be
> fetched/poped from
> >> stack?
> >>
> >> when deal with caller/callee saved regs, gcc MIPS
> just
> >> preserves them when necesasary. The problem is
> after JIT
> >> used gcc may not have enough knowledge on
> >> "necessary", do we have a way to force
> gcc always
> >> preserve
> >> them?
> >>
> >> how to identify a patch
> (patchimm/patchptr/patchaddr)
> >> relates to a data field in an instruction or
> relates to an
> >> element in a data array? In Mips the former means
> the 32bit
> >> needs to be separated into two 16bits and patched
> into two
> >> instructions. But if a 32bit is a pointer in a
> pointer
> >> array, we can save it directly.
> >>
> >> rgds
> >> joe
> >>
> >>
> >> --- On Fri, 2/20/09, Gavin Barraclough
> >> <barraclough at apple.com> wrote:
> >>
> >>> From: Gavin Barraclough
> <barraclough at apple.com>
> >>> Subject: Re: [webkit-dev] want to port JIT to
> MIPS
> >>> To: "WebKit Development"
> >> <webkit-dev at lists.webkit.org>
> >>> Date: Friday, February 20, 2009, 2:01 PM
> >>> On Feb 19, 2009, at 8:27 PM, x yz wrote:
> >>>
> >>>> I'd appreaciate your help to clarify
> the
> >> problem I
> >>> faced:
> >>>>
> >>>> 1.In JIT.cpp I roughly understand
> ctiTrampoline()
> >>> except for sp-0x1C, I guess the 1C includes 6
> argument
> >> yet
> >>> the 7th or 1st may be the hidden C++ pointer?
> And the
> >>> reserved 1C stack space seems not used? why
> esi is
> >> forced to
> >>> be 512 rather than use input argument?
> >>>
> >>> The JIT allocates a fixed frame on the stack
> which is
> >> used
> >>> to pass arguments into stub functions.  The
> 0x1C
> >> contains a
> >>> spare word or two to maintain stack alignment.
>  %esi
> >> is used
> >>> in the timeout check mechanism.
> >>>
> >>>> 2.How to understand the stack balance in
> >>> ctiVMThrowTrampoline()? why after calling we
> still add
> >> 1C
> >>> w/o sub 1C before calling? where comes
> >>> _ZN3JSC11Interpreter12cti_vm_throwEPPv and how
> do I
> >> know
> >>> which name for Mips? does this one relates to
> variable
> >>> argument function call?
> >>>
> >>> ctiVMThrowTrampoline is never called as a
> function (it
> >> is
> >>> declared as a function only to provide a
> symbol that
> >> can be
> >>> manipulated from C code). 
> ctiVMThrowTrampoline is
> >> used in
> >>> returning back from JIT generated code, in the
> case of
> >> an
> >>> exception.
> >>>
> >>>> 3.I know how to handle jump in Mips, but
> not sure
> >>> how/when to handle
> patchAddress/patchImm/patchPointer
> >>> because I'm not sure the instructions
> related. I
> >> guess
> >>> all patches are for last 32bit IMM field of
> >> instructions.
> >>>> Mips can't load 32bit in one
> instruction,
> >> thus I
> >>> need to know the instruction before I can
> patch/add in
> >> the
> >>> 32bit data.
> >>>>
> >>>> 4.I'm kind of want no asm code outside
> >>> <assembler> folder, any plan for that?
> >>>
> >>> No.  The assembler is intended to be
> independent of
> >>> JavaScript types - it's just an assembler.
>  The
> >> asm
> >>> trampolines are specific to the JIT.  It is
> currently
> >> the
> >>> intention that architecture specific parts of
> the JIT
> >>> implementation will remain in the jit folder.
> >>>
> >>> I'd suggest that in attempting to port the
> jit,
> >> WREC
> >>> would be a good place to start.
> >>>
> >>> cheers,
> >>> G.
> >>>
> >>>>
> >>>> rgds
> >>>> joe
> >>>>
> >>>> --- On Mon, 2/16/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
> >>> - when WREC/JIT enabled?
> >>>>> To: "Gavin Barraclough"
> >>> <barraclough at apple.com>
> >>>>> Cc: "WebKit Development"
> >>> <webkit-dev at lists.webkit.org>
> >>>>> Date: Monday, February 16, 2009, 5:25
> AM
> >>>>> Hi,
> >>>>> from paltform.h it is enabled only on
> X86
> >> MAC/WIN;
> >>> from
> >>>>> javaScriptCore.pri it is also enabled
> for
> >>> (QT_ARCH,i386).
> >>>>> But, from config.log I see them are
> enabled!
> >>>>>
> >>>>> how can I run WREC/JIT test so I can
> trace in
> >> X86
> >>> asm coce
> >>>>> generated?
> >>>>> thanks a lot.
> >>>>> joe
> >>>>>
> >>>>>
> >>>>>
> >>>>> --- On Sat, 2/7/09, Gavin Barraclough
> >>>>> <barraclough at apple.com> wrote:
> >>>>>
> >>>>>> From: Gavin Barraclough
> >>> <barraclough at apple.com>
> >>>>>> Subject: Re: [webkit-dev] want to
> port
> >> JIT to
> >>> MIPS -
> >>>>> using X86::ecx as base
> >>>>>> To: lastguy at yahoo.com
> >>>>>> Cc: "WebKit Development"
> >>>>> <webkit-dev at lists.webkit.org>
> >>>>>> Date: Saturday, February 7, 2009,
> 7:08 AM
> >>>>>> On Feb 6, 2009, at 2:52 PM, x yz
> wrote:
> >>>>>>
> >>>>>>> 1.what's the meaning of
> >>> ALTERNATE_JSIMMEDIATE
> >>>>> and
> >>>>>> slow case?
> >>>>>>
> >>>>>> On x86-64 we use a different
> >> implementation of
> >>> the
> >>>>> class
> >>>>>> JSImmediate.  See JSImmediate.h.
> >>>>>> Re 'slow case', in the JIT
> code
> >>> generation is
> >>>>>> performed as two passes over the
> bytecode
> >> –
> >>> see
> >>>>>> JIT::privateCompileMainPass and
> >>>>>> JIT::privateCompileSlowCases.
> >>>>>>
> >>>>>>> 2.how come the following code
> can use
> >> ECX
> >>> as base
> >>>>>> register?
> >>>>>>> load32(Address(X86::ecx,
> >>> FIELD_OFFSET(Structure,
> >>>>>> m_typeInfo.m_flags)), X86::ecx);
> >>>>>>> if the X86::ecx just means its
> value
> >> 1 in
> >>> ModR/M,
> >>>>> does
> >>>>>> it means [BX+DI]?
> >>>>>>
> >>>>>> I think you're looking at the
> old
> >> 16-bit
> >>>>> addressing
> >>>>>> mode tables; 32/64-bit x86 can
> happily
> >> encode
> >>> ecx as a
> >>>>> base
> >>>>>> register.  If you're looking
> at the
> >> Intel
> >>> IA-32
> >>>>> manual
> >>>>>> volume 2, see table 2-2 on the
> next page.
> >>>>>>
> >>>>>>> 3. can anybody help me on my
> previous
> >>> questions?
> >>>>> does
> >>>>>> JIT support floating point?
> >>>>>>
> >>>>>> Yes, some.  See JITArithmetic.cpp.
> >>>>>>
> >>>>>> cheers,
> >>>>>> G.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >> _______________________________________________
> >>>>> webkit-dev mailing list
> >>>>> webkit-dev at lists.webkit.org
> >>>>>
> >>>
> >>
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> _______________________________________________
> >>> webkit-dev mailing list
> >>> webkit-dev at lists.webkit.org
> >>>
> >>
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> >>
> >>
> >>
> >> _______________________________________________
> >> webkit-dev mailing list
> >> webkit-dev at lists.webkit.org
> >>
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
> >
> >
> >
> 
> _______________________________________________
> 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