equal
deleted
inserted
replaced
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 |