On 12/7/06, Robin Garner <[EMAIL PROTECTED]> wrote:

Mikhail Fursov wrote:
> Today helpers are inlined only by SD2_OPT JIT. We can add helpers
inlining
> to SD1_OPT too, but helpers classes are initialized only from VMStart
class
> - so there will be ~1k methods compiled by SD1_OPT without helpers
inlined
> and we will have a problem to differentiate them.

In the JikesRVM OPT compiler, write barriers and so on are inlined at
the point where bytecode is translated to HIR.  This allows the compiler
to apply the full range of intraprocedural optimizations to the barrier.


My point here is to simplify translator as much as possible and reuse
existing HLO inliner routines. This allows us to inline helpers after edge
profile is already applied. But I'm agree with you that helper inlining must
be done at the early stage, so every optimization will process helpers.

We can inline helpers before instrumentation with edge profile and annotate
helper with edge profile after method is recompiled. I think we need to
check this scenario right after helpers code become more stable. The only
proflem to check it right now is the problem with profile synchronization:
helpers are inlined only after <clinit> is executed, so part of the methods
compiled by initial SD1 JIT (first JIT in server dynamic mode) will not have
inlined helpers.


 Wouldn't this approach make the most sense here ?  Then nothing
special needs to be done to gather edge profiles etc for barriers

because they are simply part of the given method ?


Yes, I think we need to try this approach.

--
Mikhail Fursov

Reply via email to