Request for reviews (M): 6674600, 6259129 (last Escape Analysis changes for HS12)

John Rose John.Rose at Sun.COM
Thu Mar 20 13:46:45 PDT 2008


On Mar 17, 2008, at 1:38 PM, Vladimir Kozlov wrote:

> ---------------------------------------------------------------------- 
> ------ 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.

--- LoadNode::Ideal
It's OK.  There's a big chunk copied from loopopts, which is scary on  
two counts:
It's from loopopts, and it is a modified cut-n-paste.  That part  
needs to be
refactored back into a single copy, but it can be a separate cleanup.

We need a generally applicable split-through-phi as its own piece of  
code.

Review is complete.

> ---------------------------------------------------------------------- 
> ------ 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.
> ---------------------------------------------------------------------- 
> ------

--- PhaseMacroExpand::value_from_mem_phi
Another case of phi specialization.  I think this also needs to be
refactored as a generally-applicable standalone chunk of code.

The code repeats lots of local analysis in the Ideal and Identity  
methods
of memnodes.  It has to repeat rather than reuse because the inputs to
the analysis are not quite local; they involve search over memory  
chains.

As a future cleanup, we should either factor the local analyses
so as to take "pluggable" search routines to traverse memory
edges nonlocally, or rethink our memory edges so that they
do not require search, so that graph transformations are
again dependent on local information only.

The code is OK, reviewed.

-- John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20080320/984d5082/attachment.html 


More information about the hotspot-compiler-dev mailing list