proposed membar simplification in c2 (original) (raw)

Tom Rodriguez tom.rodriguez at oracle.com
Fri Jul 22 15:21:21 PDT 2011


On Jul 22, 2011, at 3:10 AM, Roland Westrelin wrote:

Hi Vladimir, Thanks for the comments.

In general I like this idea since it is platform independent condition.

There is code in macro.cpp which look for MemBarAcquire and MemBarRelease nodes to eliminate when eliminating locks and in memnode.cpp for scalar replaced object. And there is code in lcm.cpp which checks it also. I would suggest to add new membar nodes MemBarAcquireLock and MemBarReleaseLock instead of using MemBarCPUOrder. Is this what you have in mind? http://cr.openjdk.java.net/~roland/membar/webrev.02/

That looks good. I think keeping the release/acquire distinction was a good idea for later optimization.

tom

Related note: in .ad file we have to add opposite predicate on a second version of membar mach node, otherwise it will be always selected by DFA regardless predicate value:

instruct membarvolatile() %{ match(MemBarVolatile); + predicate(!Matcher::poststoreloadbarrier(n)); inscost(4*MEMORYREFCOST); The costs are not the same for membarvolatile (4*MEMORYREFCOST) and unnecessarymembarvolatile (0) so that guarantees that unnecessarymembarvolatile is tried first and that when the predicate fails membarvolatile is chosen, right? Roland.



More information about the hotspot-compiler-dev mailing list