src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp
changeset 58273 08a5148e7c4e
parent 58219 bc0648405d67
child 58339 c7d9df2e470c
equal deleted inserted replaced
58272:e27564cd10e3 58273:08a5148e7c4e
   752   }
   752   }
   753   return false;
   753   return false;
   754 }
   754 }
   755 
   755 
   756 bool ShenandoahBarrierSetC2::array_copy_requires_gc_barriers(bool tightly_coupled_alloc, BasicType type, bool is_clone, ArrayCopyPhase phase) const {
   756 bool ShenandoahBarrierSetC2::array_copy_requires_gc_barriers(bool tightly_coupled_alloc, BasicType type, bool is_clone, ArrayCopyPhase phase) const {
   757   bool is_oop = type == T_OBJECT || type == T_ARRAY;
   757   bool is_oop = is_reference_type(type);
   758   if (!is_oop) {
   758   if (!is_oop) {
   759     return false;
   759     return false;
   760   }
   760   }
   761   if (tightly_coupled_alloc) {
   761   if (tightly_coupled_alloc) {
   762     if (phase == Optimization) {
   762     if (phase == Optimization) {
   785     } else {
   785     } else {
   786       return true;
   786       return true;
   787         }
   787         }
   788   } else if (src_type->isa_aryptr()) {
   788   } else if (src_type->isa_aryptr()) {
   789     BasicType src_elem  = src_type->klass()->as_array_klass()->element_type()->basic_type();
   789     BasicType src_elem  = src_type->klass()->as_array_klass()->element_type()->basic_type();
   790     if (src_elem == T_OBJECT || src_elem == T_ARRAY) {
   790     if (is_reference_type(src_elem)) {
   791       return true;
   791       return true;
   792     }
   792     }
   793   } else {
   793   } else {
   794     return true;
   794     return true;
   795   }
   795   }