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