Requestfor reviews (L) (updated) : 6851742: (EA) allocation elimination doesn't work with UseG1GC

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Tue Jul 14 17:10:19 PDT 2009


After discussion with Tom I removed implementation of StoreOop node
and used local elimination of G1 pre/post barriers in eliminate_card_mark().

http://cr.openjdk.java.net/~kvn/6851742/webrev.04

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:
- Fix eliminate_card_mark() to eliminate of G1 pre/post barriers.

- Used idealKit for write_barrier_post() method and moved it down
   in the file. Renamed some variables to distinguish them from
   methods names.

- 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 EA to not generated duplicated Phi nodes for the same
   memory slice in ConnectionGraph::create_split_phi().

- 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: never

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