Request for reviews (M): 6674600, 6259129 (last Escape Analysis changes for HS12)
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Wed Mar 19 18:50:18 PDT 2008
I updated changes for 6259129.
http://webrev.invokedynamic.info/kvn/6259129/index.html
As Chuck suggested I divided eliminate_allocate_node() method
into 3 methods (he suggested 5 methods):
bool can_eliminate_allocation()
bool scalar_replacement()
void process_users_of_allocation()
I used new method replace_node() only in macro.cpp file.
And I filed the rfe 6677629 to investigate a possibility to call
hash_delete() and add_users_to_worklist() from subsume_node()
to clean such calls in all C2 files.
Thanks,
Vladimir
Vladimir Kozlov wrote:
> Chuck suggested to add a new method for the next sequence
> which I used very often in macro.cpp (6259129 changes):
> I added new method into PhaseIterGVN:
>
>
> + // Replace old node with new one.
> + void replace_node( Node *old, Node *nn ) {
> + add_users_to_worklist(old);
> + hash_delete(old);
> + subsume_node(old, nn);
> + }
> +
>
> But I am wondering why we not always put users of old node
> on worklist in subsume_node()?
>
> Thanks,
> Vladimir
>
> Vladimir Kozlov wrote:
>> Thank you for previous reviews.
>>
>> Here are my last EA changes for HS12.
>>
>> Note: both changesets have similar memory walking code but
>> I don't want to optimize/combine this code now. I will do it later.
>>
>> Thanks,
>> Vladimir
>>
>> ----------------------------------------------------------------------------
>>
>> http://webrev.invokedynamic.info/kvn/6674600/index.html
>>
>> Fixed 6674600: (Escape Analysis) Optimize memory graph for instance's
>> fields
>>
>> Problem:
>> To reallocate a scalarized object during a deoptimization we need
>> to know the state (values) of object's non-static fields at a safepoint.
>>
>> Solution:
>> Use aggressive memory optimizations during Iterative GVN
>> to obtain values assigned to instance's non-static fields.
>>
>> ----------------------------------------------------------------------------
>>
>> http://webrev.invokedynamic.info/kvn/6259129/index.html
>>
>> Fixed 6259129: (Escape Analysis) scalar replacement for non-escaping
>> objects
>>
>> Problem:
>> To reallocate a scalarized object during a deoptimization we need
>> to know the state (values) of object's non-static fields at a safepoint.
>>
>> Solution:
>> Replace non-escaping allocations with SafePointScalarObjectNode
>> for a scalar replacement during macro expansion of Allocate nodes.
>> Do an additional memory search to obtain values assigned to instance's
>> non-static fields. Disable scalar replacement if a field's value
>> can't be found.
>> ----------------------------------------------------------------------------
>>
>
More information about the hotspot-compiler-dev
mailing list