< prev index next >

src/hotspot/share/opto/graphKit.cpp

Print this page

        

@@ -1513,20 +1513,25 @@
 Node* GraphKit::store_to_memory(Node* ctl, Node* adr, Node *val, BasicType bt,
                                 int adr_idx,
                                 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));
   Node *mem = memory(adr_idx);
   Node* st;
   if (require_atomic_access && bt == T_LONG) {
     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);
   }
   if (unaligned) {
     st->as_Store()->set_unaligned_access();
< prev index next >