@@ -1083,45 +1083,28 @@ function copyto_unaliased!(deststyle::IndexStyle, dest::AbstractArray, srcstyle:
1083
1083
if srcstyle isa IndexLinear
1084
1084
# Single-index implementation
1085
1085
@inbounds for i in srcinds
1086
- if isassigned (src, i)
1087
- dest[i + Δi] = src[i]
1088
- else
1089
- _unsetindex! (dest, i + Δi)
1090
- end
1086
+ dest[i + Δi] = src[i]
1091
1087
end
1092
1088
else
1093
1089
# Dual-index implementation
1094
1090
i = idf - 1
1095
- @inbounds for a in eachindex (src)
1096
- i += 1
1097
- if isassigned (src, a)
1098
- dest[i] = src[a]
1099
- else
1100
- _unsetindex! (dest, i)
1101
- end
1091
+ @inbounds for a in src
1092
+ dest[i+= 1 ] = a
1102
1093
end
1103
1094
end
1104
1095
else
1105
1096
iterdest, itersrc = eachindex (dest), eachindex (src)
1106
1097
if iterdest == itersrc
1107
1098
# Shared-iterator implementation
1108
- @inbounds for I in iterdest
1109
- if isassigned (src, I)
1110
- dest[I] = src[I]
1111
- else
1112
- _unsetindex! (dest, I)
1113
- end
1099
+ for I in iterdest
1100
+ @inbounds dest[I] = src[I]
1114
1101
end
1115
1102
else
1116
1103
# Dual-iterator implementation
1117
1104
ret = iterate (iterdest)
1118
- @inbounds for a in itersrc
1105
+ @inbounds for a in src
1119
1106
idx, state = ret:: NTuple{2,Any}
1120
- if isassigned (src, a)
1121
- dest[idx] = src[a]
1122
- else
1123
- _unsetindex! (dest, idx)
1124
- end
1107
+ dest[idx] = a
1125
1108
ret = iterate (iterdest, state)
1126
1109
end
1127
1110
end
@@ -1150,11 +1133,7 @@ function copyto!(dest::AbstractArray, dstart::Integer,
1150
1133
(checkbounds (Bool, srcinds, sstart) && checkbounds (Bool, srcinds, sstart+ n- 1 )) || throw (BoundsError (src, sstart: sstart+ n- 1 ))
1151
1134
src′ = unalias (dest, src)
1152
1135
@inbounds for i = 0 : n- 1
1153
- if isassigned (src′, sstart+ i)
1154
- dest[dstart+ i] = src′[sstart+ i]
1155
- else
1156
- _unsetindex! (dest, dstart+ i)
1157
- end
1136
+ dest[dstart+ i] = src′[sstart+ i]
1158
1137
end
1159
1138
return dest
1160
1139
end
@@ -1165,7 +1144,7 @@ function copy(a::AbstractArray)
1165
1144
end
1166
1145
1167
1146
function copyto! (B:: AbstractVecOrMat{R} , ir_dest:: AbstractRange{Int} , jr_dest:: AbstractRange{Int} ,
1168
- A:: AbstractVecOrMat{S} , ir_src:: AbstractRange{Int} , jr_src:: AbstractRange{Int} ) where {R,S}
1147
+ A:: AbstractVecOrMat{S} , ir_src:: AbstractRange{Int} , jr_src:: AbstractRange{Int} ) where {R,S}
1169
1148
if length (ir_dest) != length (ir_src)
1170
1149
throw (ArgumentError (LazyString (" source and destination must have same size (got " ,
1171
1150
length (ir_src)," and " ,length (ir_dest)," )" )))
0 commit comments