diff src/share/vm/opto/block.cpp @ 601:523ded093c31

6809798: SafePointScalarObject node placed into incorrect block during GCM Summary: Replace the control edge of a pinned node before scheduling. Reviewed-by: never
author kvn
date Thu, 26 Feb 2009 14:26:02 -0800
parents 91263420e1c6
children 98cb887364d3
line wrap: on
line diff
--- a/src/share/vm/opto/block.cpp	Wed Feb 25 14:36:27 2009 -0800
+++ b/src/share/vm/opto/block.cpp	Thu Feb 26 14:26:02 2009 -0800
@@ -909,6 +909,10 @@
               !(n->jvms() != NULL && n->jvms()->is_monitor_use(k)) ) {
             assert( b->find_node(def) < j, "uses must follow definitions" );
           }
+          if( def->is_SafePointScalarObject() ) {
+            assert(_bbs[def->_idx] == b, "SafePointScalarObject Node should be at the same block as its SafePoint node");
+            assert(_bbs[def->_idx] == _bbs[def->in(0)->_idx], "SafePointScalarObject Node should be at the same block as its control edge");
+          }
         }
       }
     }