proposed membar simplification in c2 (original) (raw)
Tom Rodriguez tom.rodriguez at oracle.com
Fri Jul 22 15:21:21 PDT 2011
- Previous message: proposed membar simplification in c2
- Next message: Request for reviews (M): 7068051: SIGSEGV in PhaseIdealLoop::build_loop_late_post on T5440
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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.
- Previous message: proposed membar simplification in c2
- Next message: Request for reviews (M): 7068051: SIGSEGV in PhaseIdealLoop::build_loop_late_post on T5440
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the hotspot-compiler-dev mailing list