< prev index next >

src/share/vm/opto/idealKit.cpp

Print this page

        

*** 366,386 **** return transform(ld); } Node* IdealKit::store(Node* ctl, Node* adr, Node *val, BasicType bt, int adr_idx, ! MemNode::MemOrd mo, bool require_atomic_access) { assert(adr_idx != Compile::AliasIdxTop, "use other store_to_memory factory"); const TypePtr* adr_type = NULL; debug_only(adr_type = C->get_adr_type(adr_idx)); Node *mem = memory(adr_idx); Node* st; if (require_atomic_access && bt == T_LONG) { st = StoreLNode::make_atomic(C, ctl, mem, adr, adr_type, val, mo); } else { st = StoreNode::make(_gvn, ctl, mem, adr, adr_type, val, bt, mo); } st = transform(st); set_memory(st, adr_idx); return st; } --- 366,390 ---- return transform(ld); } Node* IdealKit::store(Node* ctl, Node* adr, Node *val, BasicType bt, int adr_idx, ! MemNode::MemOrd mo, bool require_atomic_access, ! bool mismatched) { assert(adr_idx != Compile::AliasIdxTop, "use other store_to_memory factory"); const TypePtr* adr_type = NULL; debug_only(adr_type = C->get_adr_type(adr_idx)); Node *mem = memory(adr_idx); Node* st; if (require_atomic_access && bt == T_LONG) { st = StoreLNode::make_atomic(C, ctl, mem, adr, adr_type, val, mo); } else { st = StoreNode::make(_gvn, ctl, mem, adr, adr_type, val, bt, mo); } + if (mismatched) { + st->as_Store()->set_mismatched_access(); + } st = transform(st); set_memory(st, adr_idx); return st; }
< prev index next >