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

Fixed 6851742: (EA) allocation elimination doesn't work with UseG1GC

EA expects only card mark store after oop store but
barriers for G1 are much more complex.

- 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