diff src/share/vm/opto/macro.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 49a36a80b0c7
children 98cb887364d3
line wrap: on
line diff
--- a/src/share/vm/opto/macro.cpp	Wed Feb 25 14:36:27 2009 -0800
+++ b/src/share/vm/opto/macro.cpp	Thu Feb 26 14:26:02 2009 -0800
@@ -64,6 +64,7 @@
       uint old_unique = C->unique();
       Node* new_in = old_sosn->clone(jvms_adj, sosn_map);
       if (old_unique != C->unique()) {
+        new_in->set_req(0, newcall->in(0)); // reset control edge
         new_in = transform_later(new_in); // Register new node.
       }
       old_in = new_in;