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