Mercurial > hg > truffle
diff src/share/vm/opto/output.cpp @ 4777:e9a5e0a812c8
7125896: Eliminate nested locks
Summary: Nested locks elimination done before lock nodes expansion by looking for outer locks of the same object.
Reviewed-by: never, twisti
author | kvn |
---|---|
date | Sat, 07 Jan 2012 13:26:43 -0800 |
parents | 739a9abbbd4b |
children | fd8114661503 |
line wrap: on
line diff
--- a/src/share/vm/opto/output.cpp Sat Jan 07 10:39:23 2012 -0800 +++ b/src/share/vm/opto/output.cpp Sat Jan 07 13:26:43 2012 -0800 @@ -924,10 +924,10 @@ scval = new ConstantOopWriteValue(tp->is_oopptr()->const_oop()->constant_encoding()); } - OptoReg::Name box_reg = BoxLockNode::stack_slot(box_node); + OptoReg::Name box_reg = BoxLockNode::reg(box_node); Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg)); - while( !box_node->is_BoxLock() ) box_node = box_node->in(1); - monarray->append(new MonitorValue(scval, basic_lock, box_node->as_BoxLock()->is_eliminated())); + bool eliminated = (box_node->is_BoxLock() && box_node->as_BoxLock()->is_eliminated()); + monarray->append(new MonitorValue(scval, basic_lock, eliminated)); } // We dump the object pool first, since deoptimization reads it in first.