harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Natalya Golovleva" <natalya.golovl...@gmail.com>
Subject Re: [drlvm][jit][ia-32]escape analysis based scalar replacement
Date Mon, 20 Nov 2006 07:39:59 GMT
Pavel,
array element is defined in EA when an element address is calculated. If 
element address is calculated twice it isn't clear is this the same element 
or these elements are different as array elements are unnamed. Therefore 
only local arrays with one element usage may be optimized.
Thank you,
Natalya

"Pavel Ozhdikhin" <pavel.ozhdikhin@gmail.com> wrote in message 
news:469bff730611170421o78f60bf0o6defb8ff8a429250@mail.gmail.com...
> 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