Optimising invoke and return - importing phoneME ARM JIT to Icedtea?

Xerxes Rånby xerxes at zafena.se
Fri Feb 20 04:59:27 PST 2009


Hello i have been following the recent days optimization discussion with 
great interest and wanted to fill in some thoughts.

Gary Benson skrev:
> Edward Nevill wrote:
>   
>> My poiny haired boss is in town today and I think my proposal to
>> him will be that we do the template interpreter. Based on some
>> benchmarking I did on the PC comparing zero with -Xint this should
>> give us 6 X performance increase over bare bones zero (4 X over my
>> current optimised implementation).
>>
>> Doing the template interpreter would also serve as a useful 1st step
>> to doing hotspot (should we decide to go that way).
>>
>> Gary: Does the Hotspt Compiler use the template interpreter to do
>> its codegen, or does it have its own codegen and only use the
>> template interpreter to interpret uncompiled code. (I could check
>> this myself in the source, but I am lazy).
>>     
>
> The two compilers (client and server) and the template interpreter
> are essentially independent.  There's shared code, of course, but
> they're essentially different.
>
> Whether doing the template interpreter is a good idea depends on what
> you want, and when you want it.  If your goal is a high-performance
> interpreter only solution then I'd say do the template interpreter.
> The work involved is probably something like 6-9 man months to get it
> mostly working, and maybe another 3 months to pass the TCK if that's
> what you want.
>   
In order to complete the TCK on ARM i belive some focus are needed to 
speedup the compile test cycle on ARM platforms since we dont want a 
week compiletime betweeen the TCK runs.
I have posted links to Robert Schusters tutorials and patches to 
crosscompile openjdk for arm:
http://icedtea.classpath.org/wiki/CrossCompileFaq
I will gladly help debugging any failed tests for ARM.
My own plan before i start dive into the TCK is to first focus getting a 
cross compilation environment up and then start looking into failing 
jtreg tests on ARM/Zero.
> If your goal is a high-performance interpreter+JIT combo, then adding
> the client JIT to an existing template interpreter is probably 3-6 man
> months, with maybe another 3 months for the TCK.  I'm guessing here,
> I haven't done a client JIT interpretation myself.  I'm also assuming
> you'd want client rather than server (it's probably better suited for
> ARM).
>   
A question that have tickeled my mind since fosdem are if the phoneME 
and OpenJDK jvm codebase share any similarity, if so then perhaps a 
allready implemented ARM JIT from  the phoneME project can be patched up 
to support 1.5 bytecodes and imported into a GPL only fork of OpenJDK by 
dropping all classpath exceptions.
For me it is impossible to judge the effort needed to do such a 
suggested merge.
> If you want a JIT but don't have a 12-18 months to do it in and can
> accept good but not ultimate performance, then maybe Zero and Shark
> are worth looking into.  Shark is not bad now, and it could be in
> something like a production ready state in 3-6 months.
>
> That's my two cents...
>
> Cheers,
> Gary
>   
Cheers and have a great day!
Xerxes




More information about the zero-dev mailing list