Request for Review (S): 6625997: CastPP, CheckCastPP and Proj nodes are not dead loop safe

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Tue Apr 22 19:25:53 PDT 2008


http://webrev.invokedynamic.info/kvn/6625997/index.html

Fixed 6625997: CastPP, CheckCastPP and Proj nodes are not dead loop safe

Problem:
CastPP, CheckCastPP and Proj nodes are not "dead" loop safe after
the putback 20061023120554.jrose.dolphin-cleanups which added
new methods Ideal_allocation(), Ideal_klass(), Ideal_length().
These methods could bypass the next nodes chain to get a klass or
an array's length from inputs of an Allocation node:
Allocate <- Proj <- CheckCastPP.

Also these nodes could be bypassed with Escape Analysis to get
a field's value if they are not related to the value's instance.

As result dead data loop could be created.

Solution:
Make CastPP and CheckCastPP nodes not dead loop safe.
Make Proj node not dead loop safe if it is a memory projection or
a projection from allocation node.

Reviewed by:
Fix verified (y/n): y, failed test case.

Other testing:
PRT




More information about the hotspot-compiler-dev mailing list