hotspot/src/share/vm/c1/c1_Runtime1.cpp
changeset 7427 d7b79a367474
parent 7397 5b173b4ca846
child 7913 dd096a83bdbb
equal deleted inserted replaced
7397:5b173b4ca846 7427:d7b79a367474
  1172     // Potential problem: memmove is not guaranteed to be word atomic
  1172     // Potential problem: memmove is not guaranteed to be word atomic
  1173     // Revisit in Merlin
  1173     // Revisit in Merlin
  1174     memmove(dst_addr, src_addr, length << l2es);
  1174     memmove(dst_addr, src_addr, length << l2es);
  1175     return ac_ok;
  1175     return ac_ok;
  1176   } else if (src->is_objArray() && dst->is_objArray()) {
  1176   } else if (src->is_objArray() && dst->is_objArray()) {
  1177     if (UseCompressedOops) {  // will need for tiered
  1177     if (UseCompressedOops) {
  1178       narrowOop *src_addr  = objArrayOop(src)->obj_at_addr<narrowOop>(src_pos);
  1178       narrowOop *src_addr  = objArrayOop(src)->obj_at_addr<narrowOop>(src_pos);
  1179       narrowOop *dst_addr  = objArrayOop(dst)->obj_at_addr<narrowOop>(dst_pos);
  1179       narrowOop *dst_addr  = objArrayOop(dst)->obj_at_addr<narrowOop>(dst_pos);
  1180       return obj_arraycopy_work(src, src_addr, dst, dst_addr, length);
  1180       return obj_arraycopy_work(src, src_addr, dst, dst_addr, length);
  1181     } else {
  1181     } else {
  1182       oop *src_addr  = objArrayOop(src)->obj_at_addr<oop>(src_pos);
  1182       oop *src_addr  = objArrayOop(src)->obj_at_addr<oop>(src_pos);
  1208   BarrierSet* bs = Universe::heap()->barrier_set();
  1208   BarrierSet* bs = Universe::heap()->barrier_set();
  1209   assert(bs->has_write_ref_array_opt(), "Barrier set must have ref array opt");
  1209   assert(bs->has_write_ref_array_opt(), "Barrier set must have ref array opt");
  1210   assert(bs->has_write_ref_array_pre_opt(), "For pre-barrier as well.");
  1210   assert(bs->has_write_ref_array_pre_opt(), "For pre-barrier as well.");
  1211   if (UseCompressedOops) {
  1211   if (UseCompressedOops) {
  1212     bs->write_ref_array_pre((narrowOop*)dst, num);
  1212     bs->write_ref_array_pre((narrowOop*)dst, num);
       
  1213     Copy::conjoint_oops_atomic((narrowOop*) src, (narrowOop*) dst, num);
  1213   } else {
  1214   } else {
  1214     bs->write_ref_array_pre((oop*)dst, num);
  1215     bs->write_ref_array_pre((oop*)dst, num);
  1215   }
  1216     Copy::conjoint_oops_atomic((oop*) src, (oop*) dst, num);
  1216   Copy::conjoint_oops_atomic((oop*) src, (oop*) dst, num);
  1217   }
  1217   bs->write_ref_array(dst, num);
  1218   bs->write_ref_array(dst, num);
  1218 JRT_END
  1219 JRT_END
  1219 
  1220 
  1220 
  1221 
  1221 #ifndef PRODUCT
  1222 #ifndef PRODUCT