--- old/src/hotspot/share/opto/graphKit.cpp 2018-10-31 14:22:38.251956202 +0100 +++ new/src/hotspot/share/opto/graphKit.cpp 2018-10-31 14:22:38.128956300 +0100 @@ -1515,7 +1515,8 @@ MemNode::MemOrd mo, bool require_atomic_access, bool unaligned, - bool mismatched) { + bool mismatched, + int storeZ) { 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)); @@ -1525,6 +1526,10 @@ st = StoreLNode::make_atomic(ctl, mem, adr, adr_type, val, mo); } else if (require_atomic_access && bt == T_DOUBLE) { st = StoreDNode::make_atomic(ctl, mem, adr, adr_type, val, mo); + } else if (bt == T_BYTE && storeZ == 0) { + st = new StoreZ0Node(ctl, mem, adr, adr_type, val, mo); + } else if (bt == T_BYTE && storeZ == 1) { + st = new StoreZ1Node(ctl, mem, adr, adr_type, val, mo); } else { st = StoreNode::make(_gvn, ctl, mem, adr, adr_type, val, bt, mo); }