src/share/vm/opto/stringopts.cpp

Print this page
rev 5661 : 8024921: PPC64 (part 113): Extend Load and Store nodes to know about memory ordering.

@@ -1120,11 +1120,12 @@
     type = Type::get_const_basic_type(bt);
   }
 
   return kit.make_load(NULL, kit.basic_plus_adr(klass_node, field->offset_in_bytes()),
                        type, T_OBJECT,
-                       C->get_alias_index(mirror_type->add_offset(field->offset_in_bytes())));
+                       C->get_alias_index(mirror_type->add_offset(field->offset_in_bytes())),
+                       false, LoadNode::unordered);
 }
 
 Node* PhaseStringOpts::int_stringSize(GraphKit& kit, Node* arg) {
   RegionNode *final_merge = new (C) RegionNode(3);
   kit.gvn().set_type(final_merge, Type::CONTROL);

@@ -1312,11 +1313,11 @@
                                      __ LShiftI(q, __ intcon(1))));
     Node* m1 = __ SubI(charPos, __ intcon(1));
     Node* ch = __ AddI(r, __ intcon('0'));
 
     Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR),
-                                  ch, T_CHAR, char_adr_idx);
+                                  ch, T_CHAR, char_adr_idx, false, StoreNode::unordered);
 
 
     IfNode* iff = kit.create_and_map_if(head, __ Bool(__ CmpI(q, __ intcon(0)), BoolTest::ne),
                                         PROB_FAIR, COUNT_UNKNOWN);
     Node* ne = __ IfTrue(iff);

@@ -1354,11 +1355,11 @@
       final_merge->init_req(1, C->top());
       final_mem->init_req(1, C->top());
     } else {
       Node* m1 = __ SubI(charPos, __ intcon(1));
       Node* st = __ store_to_memory(kit.control(), kit.array_element_address(char_array, m1, T_CHAR),
-                                    sign, T_CHAR, char_adr_idx);
+                                    sign, T_CHAR, char_adr_idx, false, StoreNode::unordered);
 
       final_merge->init_req(1, kit.control());
       final_mem->init_req(1, st);
     }
 

@@ -1385,11 +1386,12 @@
     int o = offset->get_int();
     const TypeOopPtr* t = kit.gvn().type(value)->isa_oopptr();
     ciTypeArray* value_array = t->const_oop()->as_type_array();
     for (int e = 0; e < c; e++) {
       __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR),
-                         __ intcon(value_array->char_at(o + e)), T_CHAR, char_adr_idx);
+                         __ intcon(value_array->char_at(o + e)), T_CHAR, char_adr_idx,
+                         false, StoreNode::unordered);
       start = __ AddI(start, __ intcon(1));
     }
   } else {
     Node* src_ptr = kit.array_element_address(value, offset, T_CHAR);
     Node* dst_ptr = kit.array_element_address(char_array, start, T_CHAR);

@@ -1605,11 +1607,11 @@
           start = copy_string(kit, arg, char_array, start);
           break;
         }
         case StringConcat::CharMode: {
           __ store_to_memory(kit.control(), kit.array_element_address(char_array, start, T_CHAR),
-                             arg, T_CHAR, char_adr_idx);
+                             arg, T_CHAR, char_adr_idx, false, StoreNode::unordered);
           start = __ AddI(start, __ intcon(1));
           break;
         }
         default:
           ShouldNotReachHere();