diff src/share/vm/opto/node.cpp @ 20327:411e30e5fbb8

8026796: Make replace_in_map() on parent maps generic Summary: propagate node replacements along control flow edges to callers Reviewed-by: kvn, vlivanov
author roland
date Wed, 13 Aug 2014 11:00:22 +0200
parents 78bbf4d43a14
children 91cb3b8aac2b
line wrap: on
line diff
--- a/src/share/vm/opto/node.cpp	Wed Apr 23 12:37:36 2014 +0200
+++ b/src/share/vm/opto/node.cpp	Wed Aug 13 11:00:22 2014 +0200
@@ -527,6 +527,9 @@
   if (n->is_Call()) {
     n->as_Call()->clone_jvms(C);
   }
+  if (n->is_SafePoint()) {
+    n->as_SafePoint()->clone_replaced_nodes();
+  }
   return n;                     // Return the clone
 }
 
@@ -622,6 +625,9 @@
   if (is_expensive()) {
     compile->remove_expensive_node(this);
   }
+  if (is_SafePoint()) {
+    as_SafePoint()->delete_replaced_nodes();
+  }
 #ifdef ASSERT
   // We will not actually delete the storage, but we'll make the node unusable.
   *(address*)this = badAddress;  // smash the C++ vtbl, probably