Need reviews for 6671807, 6672848, 6673473

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Tue Mar 11 12:36:51 PDT 2008

Only 3 left :)



Fixed 6672848: Escape Analysis: improve lock elimination with EA

Improve locks elimination based on an allocation escape state from EA.

Remove MemBar nodes associated with elided lock/unlock nodes and
specify in debug info which locks should be restored during


Fixed 6671807: Escape Analysis: Add new ideal node to represent the state of a scalarized object at a safepoint

To reallocate a scalarized object during a deoptimization we need
to know the state (values) of object's non-static fields at a safepoint.

Add new ideal node SafePointScalarObjectNode to represent the state of
a scalarized object at a safepoint. It describes additional input edges
(starting and count) in the safepoint node to which it is attached.
SafePointScalarObjectNode nodes will be created for each safepoint nodes
which reference the original scalar replaced allocation (this code
will be added in next changes).


Fixed 6673473: Escape Analysis: Add the instance's field information to PhiNode

Phi nodes are generated when needed to represent instance's fields values
for a scalar replacement of an allocation. They are generated during memory
optimization by using split_through_phi optimization. It creates a problem
when we do this for a loop's Phi since there is no a guard against infinite
(for each optimization path for the loop) generation of such value Phi nodes.

Add the instance's field information to PhiNode to reuse the same value Phi.

Also additional (needed for EA) fixes in touched files:
1. Fix TypeAryPtr::xmeet() and dump2() methods for array instances.
2. Move the code in MemNode::Ideal_common() to the separate method
    step_through_mergemem() which will be used in the next EA changes.
3. Replace incorrect assert (static calls are not only runtime calls)
    in MemNode::Ideal_DU_postCCP() with more precise asserts.
4. Fix the assert in MergeMemNode::Ideal() to allow duplicated references
    when the transformation is still in 'progress'.

More information about the hotspot-compiler-dev mailing list