comparison src/share/vm/opto/locknode.cpp @ 460:424f9bfe6b96

6775880: EA +DeoptimizeALot: assert(mon_info->owner()->is_locked(),"object must be locked now") Summary: Create new "eliminated" BoxLock node for monitor debug info when corresponding locks are eliminated. Reviewed-by: never
author kvn
date Wed, 03 Dec 2008 13:41:37 -0800
parents d1605aabd0a1
children 98cb887364d3
comparison
equal deleted inserted replaced
459:3a86a8dcf27c 460:424f9bfe6b96
42 init_flags(Flag_rematerialize); 42 init_flags(Flag_rematerialize);
43 OptoReg::Name reg = OptoReg::stack2reg(_slot); 43 OptoReg::Name reg = OptoReg::stack2reg(_slot);
44 _inmask.Insert(reg); 44 _inmask.Insert(reg);
45 } 45 }
46 46
47 //-----------------------------hash--------------------------------------------
48 uint BoxLockNode::hash() const {
49 return Node::hash() + _slot + (_is_eliminated ? Compile::current()->fixed_slots() : 0);
50 }
51
47 //------------------------------cmp-------------------------------------------- 52 //------------------------------cmp--------------------------------------------
48 uint BoxLockNode::cmp( const Node &n ) const { 53 uint BoxLockNode::cmp( const Node &n ) const {
49 const BoxLockNode &bn = (const BoxLockNode &)n; 54 const BoxLockNode &bn = (const BoxLockNode &)n;
50 return bn._slot == _slot; 55 return bn._slot == _slot && bn._is_eliminated == _is_eliminated;
51 } 56 }
52 57
53 OptoReg::Name BoxLockNode::stack_slot(Node* box_node) { 58 OptoReg::Name BoxLockNode::stack_slot(Node* box_node) {
54 // Chase down the BoxNode 59 // Chase down the BoxNode
55 while (!box_node->is_BoxLock()) { 60 while (!box_node->is_BoxLock()) {