Request for reviews (L): 6851742: (EA) allocation elimination doesn't work with UseG1GC
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Tue Jul 7 18:44:41 PDT 2009
http://cr.openjdk.java.net/~kvn/6851742/webrev.02
Fixed 6851742: (EA) allocation elimination doesn't work with UseG1GC
Problem:
EA expects only card mark store after oop store but
barriers for G1 are much more complex.
Solution:
- Generate a new macro node StoreOop for a oop store when G1 is used
and expand it after an allocation elimination. Use membar node after
StoreOop node to keep track of raw memory and control edges needed
during StoreOop expansion. Do not generate post barrier if StoreOop
node is followed by an other StoreOop for the same object.
- Move barriers code generation into IdealKit class since it is used
now by graphKit and macroExpand.
- Check IGVN delay_transform flag in IdealKit when setting bottom_type
for new nodes.
- Don't clone memory around leaf call in IdealKit since it modifies
only raw memory.
- Explicitly remove the original merge region in IfNode split_if()
otherwise it will not be removed if it has dead users and
it will cause unique_ctrl_out() to return an incorrect result.
- Fix IdealKit code in LibraryCallKit::inline_unsafe_access()
which produced incorrect graph.
- Fix MachNode::adr_type for direct addressing modes to use
ideal type if it is ptr. And remove rawptr cutout in
mach node adr type verification code.
Reviewed by:
Fix verified (y/n): y, bug's test
Other testing:
JPRT, CTW +G1 +EA 32-bit 64-bit
More information about the hotspot-compiler-dev
mailing list