[webkit-dev] ARM JIT and related issues
Maciej Stachowiak
mjs at apple.com
Tue Jun 16 18:44:18 PDT 2009
On Jun 16, 2009, at 5:52 PM, Toshiyasu Morita wrote:
> --- On Wed, 6/17/09, Maciej Stachowiak <mjs at apple.com> wrote:
> 5) Gavin has been a strong proponent of using MacroAssembler as the
> primary CPU
> > abstraction layer, and that approach has worked reasonably well so
> far. However,
> > it seems at least to me that CPUs with very different instruction
> sets may want to
> > do things differently at a higher level. x86 is a 2-operand
> instruction set with
> > optional memory operands, and it seems to me a 3-operand load-store
> > architecture might want to do things in a different way to get
> good performance.
>
> The porting problem IMHO isn't the number of operands. The problem
> is the JIT design assumes a CISC processor with the following
> characteristics:
>
> 1) call/return instructions which store the return address on the
> stack as on the x86 processor. If the target processor doesn't do
> this, then this requires a huge amount of work.
>
> 2) The JIT performs relocations in a kludgy way. Some relocations
> are performed before the code is copied to the final location, and
> some relocations after. Also, it's not clear which relocations are
> within a single code block, and which go across code blocks, so the
> generated code needs to assume the worst case if the target
> processor has a limited number of bits for relative branches.
>
> 3) JIT assumes the call instruction does not need to have the call
> address loaded into a register, which is the cause of the current
> bug I'm debugging. The JIT generates code which calls another call
> instruction directly instead of calling the previous two
> instructions which loads the call address into the register.
>
> I could go on and on, but you get the idea. Basically, the current
> JIT design akes a large number of x86/CISC target architecture
> assumptions.
The issues you raise don't seem to have stopped either of the ARM
ports so they do not seem like fundamental issues.
- Maciej
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20090616/4e092e0b/attachment.html>
More information about the webkit-dev
mailing list