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()) { |