Mercurial > hg > graal-compiler
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()) { |