harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xiao-Feng Li" <xiaofeng...@gmail.com>
Subject Re: [drlvm][jit][ia-32]escape analysis based scalar replacement
Date Mon, 20 Nov 2006 00:39:43 GMT
Are there any good ways for a microbenchmark to show the headroom of
scalar replacement? I personally think it's a known good optimization
in compiler community. Probably one can give two test cases, one has
intensive object fields accesses, while another has mostly local
primitive typed variables accesses. They are carefully designed so  as
to reflect the difference made scalar replacement.

Thanks,
xiaofeng

On 11/17/06, Pavel Ozhdikhin <pavel.ozhdikhin@gmail.com> wrote:
> Natalya,
>
> Thanks for the proposal.
> I think you should start with opening a new JIRA issue, copy the description
> of the optimization there and submit some micro-benchmarks showing the
> headroom for optimization.  Later we'll use this JIRA for discussng code
> patches.
>
> One question:
>
> > -        optimized array may have only one array element usage.
>
> What prevents array objects with, say, 2 elements used from being optimized?
>
> Thanks,
> Pavel
>
> On 11/17/06, Natalya Golovleva <natalya.golovleva@gmail.com> wrote:
> >
> > Hello all,
> >
> >
> >
> > JIT Development Tasks list among other tasks contains new optimization -
> > EA-based scalar replacement.
> >
> >
> >
> > EA determinates for every reference object used in the method its state:
> > local, argument escaped and global escaped.
> >
> > Escape analysis (EA) is already committed to harmony.
> >
> >
> >
> > Scalar replacement optimization may be done for local objects (class
> > instances and arrays) that satisfy to:
> >
> > -        class should not have finalizer, class instance initializer
> > should
> > not have side effects;
> >
> > -        optimized array may have only one array element usage.
> >
> >
> >
> > I am going to implement EA-based scalar replacement for IA-32.
> >
> >
> >
> > The proposal is:
> >
> > 1.. to perform scalar replacement for specified above local objects.
> > 2.. using devirtualization and inlining change method code to create the
> > object only when it is used as a parameter of virtual call and perform
> > scalar replacement for branches with inlined direct calls.
> >
> >
> > Any comments are welcome.
> >
> >
> >
> > Thank you,
> >
> > Natalya.
> >
> >
> >
> >
>
>

Mime
View raw message