equal
deleted
inserted
replaced
266 return false; |
266 return false; |
267 } |
267 } |
268 |
268 |
269 BasicType src_elem = ary_src->klass()->as_array_klass()->element_type()->basic_type(); |
269 BasicType src_elem = ary_src->klass()->as_array_klass()->element_type()->basic_type(); |
270 BasicType dest_elem = ary_dest->klass()->as_array_klass()->element_type()->basic_type(); |
270 BasicType dest_elem = ary_dest->klass()->as_array_klass()->element_type()->basic_type(); |
271 if (src_elem == T_ARRAY) src_elem = T_OBJECT; |
271 if (is_reference_type(src_elem)) src_elem = T_OBJECT; |
272 if (dest_elem == T_ARRAY) dest_elem = T_OBJECT; |
272 if (is_reference_type(dest_elem)) dest_elem = T_OBJECT; |
273 |
273 |
274 if (src_elem != dest_elem || dest_elem == T_VOID) { |
274 if (src_elem != dest_elem || dest_elem == T_VOID) { |
275 // We don't know if arguments are arrays of the same type |
275 // We don't know if arguments are arrays of the same type |
276 return false; |
276 return false; |
277 } |
277 } |
326 adr_dest = dest; |
326 adr_dest = dest; |
327 base_dest = dest->in(AddPNode::Base); |
327 base_dest = dest->in(AddPNode::Base); |
328 |
328 |
329 assert(phase->type(src->in(AddPNode::Offset))->is_intptr_t()->get_con() == phase->type(dest->in(AddPNode::Offset))->is_intptr_t()->get_con(), "same start offset?"); |
329 assert(phase->type(src->in(AddPNode::Offset))->is_intptr_t()->get_con() == phase->type(dest->in(AddPNode::Offset))->is_intptr_t()->get_con(), "same start offset?"); |
330 BasicType elem = ary_src->klass()->as_array_klass()->element_type()->basic_type(); |
330 BasicType elem = ary_src->klass()->as_array_klass()->element_type()->basic_type(); |
331 if (elem == T_ARRAY) elem = T_OBJECT; |
331 if (is_reference_type(elem)) elem = T_OBJECT; |
332 |
332 |
333 BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); |
333 BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2(); |
334 if (bs->array_copy_requires_gc_barriers(true, elem, true, BarrierSetC2::Optimization)) { |
334 if (bs->array_copy_requires_gc_barriers(true, elem, true, BarrierSetC2::Optimization)) { |
335 return false; |
335 return false; |
336 } |
336 } |