diff src/share/vm/opto/callnode.cpp @ 4778:35acf8f0a2e4

7128352: assert(obj_node == obj) failed Summary: Compare uncasted object nodes. Reviewed-by: never
author kvn
date Tue, 10 Jan 2012 18:05:38 -0800
parents e9a5e0a812c8
children b0ff910edfc9
line wrap: on
line diff
--- a/src/share/vm/opto/callnode.cpp	Sat Jan 07 13:26:43 2012 -0800
+++ b/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;
       }
     }