Request for reviews (M): 6731641: assert(m->adr_type() == mach->adr_type(),"matcher should not change adr type")

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Thu Jul 31 09:49:06 PDT 2008


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

Fixed 6731641: assert(m->adr_type() == mach->adr_type(),"matcher should not change adr type")

Problem:
AddPNode::bottom_type() and AddPNode::mach_bottom_type() produce
different result since the type of in(Address) edge is more
precise (TypPtr::NotNull) then the type of in(Base) edge.

The split_thru_phi code in loopopt.cpp and in memory.cpp
sets igvn.type(x) but does not reset bottom_type for TypeNode* x.
As result TypeNode::_type is not reset.

Missing bottom_type() method for mach node CMoveN.

Solution:
- Fix AddPNode::mach_bottom_type() to use more precise type for bailout.
- Reset bottom_type for TypeNode in the split_thru_phi code.
- Add missing bottom_type() method for mach node CMoveN (copied from CMoveP).
- Don't generate CMove nodes when a phi has DecodeN/EncodeP users since
   they could be candidates for split_thru_phi optimization.
- Add missing checks for LoadN, LoadNKlass.
- Fix TypeNarrowOop::xmeet() - narrow oops should meet only with narrow oops.

Disable Escape Analysis before push into hotspot/hotspot.

Reviewed by:
Fix verified (y/n): y, failed CTW runs.

Other testing:
JPRT





More information about the hotspot-compiler-dev mailing list