--- a/hotspot/src/share/vm/opto/callnode.cpp Sat Jan 07 13:26:43 2012 -0800
+++ b/hotspot/src/share/vm/opto/callnode.cpp Tue Jan 10 18:05:38 2012 -0800
@@ -1386,7 +1386,7 @@
Node *n = ctrl_proj->in(0);
if (n != NULL && n->is_Unlock()) {
UnlockNode *unlock = n->as_Unlock();
- if ((lock->obj_node() == unlock->obj_node()) &&
+ if (lock->obj_node()->eqv_uncast(unlock->obj_node()) &&
BoxLockNode::same_slot(lock->box_node(), unlock->box_node()) &&
!unlock->is_eliminated()) {
lock_ops.append(unlock);
@@ -1431,7 +1431,7 @@
}
if (ctrl->is_Lock()) {
LockNode *lock = ctrl->as_Lock();
- if ((lock->obj_node() == unlock->obj_node()) &&
+ if (lock->obj_node()->eqv_uncast(unlock->obj_node()) &&
BoxLockNode::same_slot(lock->box_node(), unlock->box_node())) {
lock_result = lock;
}
@@ -1462,7 +1462,7 @@
}
if (lock1_node != NULL && lock1_node->is_Lock()) {
LockNode *lock1 = lock1_node->as_Lock();
- if ((lock->obj_node() == lock1->obj_node()) &&
+ if (lock->obj_node()->eqv_uncast(lock1->obj_node()) &&
BoxLockNode::same_slot(lock->box_node(), lock1->box_node()) &&
!lock1->is_eliminated()) {
lock_ops.append(lock1);
@@ -1650,7 +1650,7 @@
for (int idx = 0; idx < num_mon; idx++) {
Node* obj_node = sfn->monitor_obj(jvms, idx);
BoxLockNode* box_node = BoxLockNode::box_node(sfn->monitor_box(jvms, idx));
- if ((obj_node == obj) && (box_node->stack_slot() < stk_slot)) {
+ if ((box_node->stack_slot() < stk_slot) && obj_node->eqv_uncast(obj)) {
return true;
}
}