hotspot/src/share/vm/opto/callnode.cpp
changeset 11446 fd87432a895b
parent 11445 3c768dca60f5
child 11458 5ba160829cef
--- 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;
       }
     }