hotspot/src/share/vm/opto/macroArrayCopy.cpp
changeset 42086 feac795f345d
parent 38704 eb96c446c3a5
child 45427 64e07017ce01
equal deleted inserted replaced
42085:b23a10ed6a60 42086:feac795f345d
  1152     }
  1152     }
  1153 
  1153 
  1154     // Call StubRoutines::generic_arraycopy stub.
  1154     // Call StubRoutines::generic_arraycopy stub.
  1155     Node* mem = generate_arraycopy(ac, NULL, &ctrl, merge_mem, &io,
  1155     Node* mem = generate_arraycopy(ac, NULL, &ctrl, merge_mem, &io,
  1156                                    TypeRawPtr::BOTTOM, T_CONFLICT,
  1156                                    TypeRawPtr::BOTTOM, T_CONFLICT,
  1157                                    src, src_offset, dest, dest_offset, length);
  1157                                    src, src_offset, dest, dest_offset, length,
       
  1158                                    // If a  negative length guard was generated for the ArrayCopyNode,
       
  1159                                    // the length of the array can never be negative.
       
  1160                                    false, ac->has_negative_length_guard());
  1158 
  1161 
  1159     // Do not let reads from the destination float above the arraycopy.
  1162     // Do not let reads from the destination float above the arraycopy.
  1160     // Since we cannot type the arrays, we don't know which slices
  1163     // Since we cannot type the arrays, we don't know which slices
  1161     // might be affected.  We could restrict this barrier only to those
  1164     // might be affected.  We could restrict this barrier only to those
  1162     // memory slices which pertain to array elements--but don't bother.
  1165     // memory slices which pertain to array elements--but don't bother.
  1256   }
  1259   }
  1257 
  1260 
  1258   generate_arraycopy(ac, alloc, &ctrl, merge_mem, &io,
  1261   generate_arraycopy(ac, alloc, &ctrl, merge_mem, &io,
  1259                      adr_type, dest_elem,
  1262                      adr_type, dest_elem,
  1260                      src, src_offset, dest, dest_offset, length,
  1263                      src, src_offset, dest, dest_offset, length,
  1261                      false, false, slow_region);
  1264                      // If a  negative length guard was generated for the ArrayCopyNode,
  1262 }
  1265                      // the length of the array can never be negative.
       
  1266                      false, ac->has_negative_length_guard(), slow_region);
       
  1267 }