hotspot/src/share/vm/opto/phaseX.cpp
changeset 15813 6efd4c793e47
parent 15618 3eb521896836
child 16619 a0e531dcc9e9
--- a/hotspot/src/share/vm/opto/phaseX.cpp	Fri Feb 22 10:12:00 2013 -0800
+++ b/hotspot/src/share/vm/opto/phaseX.cpp	Mon Feb 25 14:13:04 2013 +0100
@@ -1197,6 +1197,18 @@
                 assert(!(i < imax), "sanity");
               }
             }
+            if (ReduceFieldZeroing && dead->is_Load() && i == MemNode::Memory &&
+                in->is_Proj() && in->in(0) != NULL && in->in(0)->is_Initialize()) {
+              // A Load that directly follows an InitializeNode is
+              // going away. The Stores that follow are candidates
+              // again to be captured by the InitializeNode.
+              for (DUIterator_Fast jmax, j = in->fast_outs(jmax); j < jmax; j++) {
+                Node *n = in->fast_out(j);
+                if (n->is_Store()) {
+                  _worklist.push(n);
+                }
+              }
+            }
           }
         }
         C->record_dead_node(dead->_idx);