src/share/vm/opto/memnode.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
6877254 Cdiff src/share/vm/opto/memnode.cpp
src/share/vm/opto/memnode.cpp
Print this page
*** 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