src/share/vm/opto/memnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/memnode.cpp	Tue Sep  1 11:02:00 2009
--- new/src/share/vm/opto/memnode.cpp	Tue Sep  1 11:02:00 2009

*** 2308,2320 **** --- 2308,2339 ---- const Type *t1 = phase->type( my_store->in(MemNode::ValueIn) ); if( t1 == TypePtr::NULL_PTR ) { return in(MemNode::Memory); } } + 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()); + if (mem != my_store) { + 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 const Type *t = phase->type( in(MemNode::Memory) ); if( t == Type::TOP ) return Type::TOP;

src/share/vm/opto/memnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File