--- a/hotspot/src/share/vm/opto/memnode.cpp Thu Sep 10 18:18:06 2009 -0700
+++ b/hotspot/src/share/vm/opto/memnode.cpp Mon Sep 14 09:49:54 2009 -0700
@@ -2313,6 +2313,22 @@
return this;
}
+//=============================================================================
+//------------------------------Ideal---------------------------------------
+Node *StoreCMNode::Ideal(PhaseGVN *phase, bool can_reshape){
+ Node* progress = StoreNode::Ideal(phase, can_reshape);
+ if (progress != NULL) return progress;
+
+ Node* my_store = in(MemNode::OopStore);
+ if (my_store->is_MergeMem()) {
+ Node* mem = my_store->as_MergeMem()->memory_at(oop_alias_idx());
+ set_req(MemNode::OopStore, mem);
+ return this;
+ }
+
+ return NULL;
+}
+
//------------------------------Value-----------------------------------------
const Type *StoreCMNode::Value( PhaseTransform *phase ) const {
// Either input is TOP ==> the result is TOP