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