@@ -216,7 +216,7 @@ isbitsunion(u::Type) = u isa Union && allocatedinline(u)
216
216
function _unsetindex! (A:: Array , i:: Int )
217
217
@inline
218
218
@boundscheck checkbounds (A, i)
219
- @inbounds _unsetindex! (GenericMemoryRef (A. ref, i))
219
+ @inbounds _unsetindex! (memoryref (A. ref, i))
220
220
return A
221
221
end
222
222
@@ -239,14 +239,14 @@ function isassigned(a::Array, i::Int...)
239
239
@_noub_if_noinbounds_meta
240
240
@boundscheck checkbounds (Bool, a, i... ) || return false
241
241
ii = _sub2ind (size (a), i... )
242
- return @inbounds isassigned (memoryref (a. ref, ii, false ))
242
+ return @inbounds isassigned (memoryrefnew (a. ref, ii, false ))
243
243
end
244
244
245
245
function isassigned (a:: Vector , i:: Int ) # slight compiler simplification for the most common case
246
246
@inline
247
247
@_noub_if_noinbounds_meta
248
248
@boundscheck checkbounds (Bool, a, i) || return false
249
- return @inbounds isassigned (memoryref (a. ref, i, false ))
249
+ return @inbounds isassigned (memoryrefnew (a. ref, i, false ))
250
250
end
251
251
252
252
@@ -281,7 +281,7 @@ the same manner as C.
281
281
"""
282
282
function unsafe_copyto! (dest:: Array , doffs, src:: Array , soffs, n)
283
283
n == 0 && return dest
284
- unsafe_copyto! (GenericMemoryRef (dest. ref, doffs), GenericMemoryRef (src. ref, soffs), n)
284
+ unsafe_copyto! (memoryref (dest. ref, doffs), memoryref (src. ref, soffs), n)
285
285
return dest
286
286
end
287
287
@@ -303,8 +303,8 @@ function _copyto_impl!(dest::Union{Array,Memory}, doffs::Integer, src::Union{Arr
303
303
n > 0 || _throw_argerror (" Number of elements to copy must be non-negative." )
304
304
@boundscheck checkbounds (dest, doffs: doffs+ n- 1 )
305
305
@boundscheck checkbounds (src, soffs: soffs+ n- 1 )
306
- @inbounds let dest = GenericMemoryRef (dest isa Array ? getfield (dest, :ref ) : dest, doffs)
307
- src = GenericMemoryRef (src isa Array ? getfield (src, :ref ) : src, soffs)
306
+ @inbounds let dest = memoryref (dest isa Array ? getfield (dest, :ref ) : dest, doffs),
307
+ src = memoryref (src isa Array ? getfield (src, :ref ) : src, soffs)
308
308
unsafe_copyto! (dest, src, n)
309
309
end
310
310
return dest
348
348
@_nothrow_meta
349
349
ref = a. ref
350
350
newmem = ccall (:jl_genericmemory_copy_slice , Ref{Memory{T}}, (Any, Ptr{Cvoid}, Int), ref. mem, ref. ptr_or_offset, length (a))
351
- return $ (Expr (:new , :(typeof (a)), :(Core . memoryref (newmem)), :(a. size)))
351
+ return $ (Expr (:new , :(typeof (a)), :(memoryref (newmem)), :(a. size)))
352
352
end
353
353
354
354
# # Constructors ##
@@ -973,21 +973,21 @@ function setindex! end
973
973
function setindex! (A:: Array{T} , x, i:: Int ) where {T}
974
974
@_noub_if_noinbounds_meta
975
975
@boundscheck (i - 1 )% UInt < length (A)% UInt || throw_boundserror (A, (i,))
976
- memoryrefset! (memoryref (A. ref, i, false ), x isa T ? x : convert (T,x):: T , :not_atomic , false )
976
+ memoryrefset! (memoryrefnew (A. ref, i, false ), x isa T ? x : convert (T,x):: T , :not_atomic , false )
977
977
return A
978
978
end
979
979
function setindex! (A:: Array{T} , x, i1:: Int , i2:: Int , I:: Int... ) where {T}
980
980
@inline
981
981
@_noub_if_noinbounds_meta
982
982
@boundscheck checkbounds (A, i1, i2, I... ) # generally _to_linear_index requires bounds checking
983
- memoryrefset! (memoryref (A. ref, _to_linear_index (A, i1, i2, I... ), false ), x isa T ? x : convert (T,x):: T , :not_atomic , false )
983
+ memoryrefset! (memoryrefnew (A. ref, _to_linear_index (A, i1, i2, I... ), false ), x isa T ? x : convert (T,x):: T , :not_atomic , false )
984
984
return A
985
985
end
986
986
987
987
__safe_setindex! (A:: Vector{Any} , @nospecialize (x), i:: Int ) = (@inline ; @_nothrow_noub_meta ;
988
- memoryrefset! (memoryref (A. ref, i, false ), x, :not_atomic , false ); return A)
988
+ memoryrefset! (memoryrefnew (A. ref, i, false ), x, :not_atomic , false ); return A)
989
989
__safe_setindex! (A:: Vector{T} , x:: T , i:: Int ) where {T} = (@inline ; @_nothrow_noub_meta ;
990
- memoryrefset! (memoryref (A. ref, i, false ), x, :not_atomic , false ); return A)
990
+ memoryrefset! (memoryrefnew (A. ref, i, false ), x, :not_atomic , false ); return A)
991
991
__safe_setindex! (A:: Vector{T} , x, i:: Int ) where {T} = (@inline ;
992
992
__safe_setindex! (A, convert (T, x):: T , i))
993
993
@@ -1059,7 +1059,7 @@ function _growbeg!(a::Vector, delta::Integer)
1059
1059
setfield! (a, :size , (newlen,))
1060
1060
# if offset is far enough advanced to fit data in existing memory without copying
1061
1061
if delta <= offset - 1
1062
- setfield! (a, :ref , @inbounds GenericMemoryRef (ref, 1 - delta))
1062
+ setfield! (a, :ref , @inbounds memoryref (ref, 1 - delta))
1063
1063
else
1064
1064
@noinline (function ()
1065
1065
memlen = length (mem)
@@ -1078,7 +1078,7 @@ function _growbeg!(a::Vector, delta::Integer)
1078
1078
newmem = array_new_memory (mem, newmemlen)
1079
1079
end
1080
1080
unsafe_copyto! (newmem, newoffset + delta, mem, offset, len)
1081
- setfield! (a, :ref , @inbounds GenericMemoryRef (newmem, newoffset))
1081
+ setfield! (a, :ref , @inbounds memoryref (newmem, newoffset))
1082
1082
end )()
1083
1083
end
1084
1084
return
@@ -1113,7 +1113,7 @@ function _growend!(a::Vector, delta::Integer)
1113
1113
newmem = array_new_memory (mem, newmemlen2)
1114
1114
newoffset = offset
1115
1115
end
1116
- newref = @inbounds GenericMemoryRef (newmem, newoffset)
1116
+ newref = @inbounds memoryref (newmem, newoffset)
1117
1117
unsafe_copyto! (newref, ref, len)
1118
1118
setfield! (a, :ref , newref)
1119
1119
end )()
@@ -1142,7 +1142,7 @@ function _growat!(a::Vector, i::Integer, delta::Integer)
1142
1142
prefer_start = i <= div (len, 2 )
1143
1143
# if offset is far enough advanced to fit data in beginning of the memory
1144
1144
if prefer_start && delta <= offset - 1
1145
- newref = @inbounds GenericMemoryRef (mem, offset - delta)
1145
+ newref = @inbounds memoryref (mem, offset - delta)
1146
1146
unsafe_copyto! (newref, ref, i)
1147
1147
setfield! (a, :ref , newref)
1148
1148
for j in i: i+ delta- 1
@@ -1159,7 +1159,7 @@ function _growat!(a::Vector, i::Integer, delta::Integer)
1159
1159
newmemlen = max (overallocation (memlen), len+ 2 * delta+ 1 )
1160
1160
newoffset = (newmemlen - newlen) ÷ 2 + 1
1161
1161
newmem = array_new_memory (mem, newmemlen)
1162
- newref = @inbounds GenericMemoryRef (newmem, newoffset)
1162
+ newref = @inbounds memoryref (newmem, newoffset)
1163
1163
unsafe_copyto! (newref, ref, i- 1 )
1164
1164
unsafe_copyto! (newmem, newoffset + delta + i - 1 , mem, offset + i - 1 , len - i + 1 )
1165
1165
setfield! (a, :ref , newref)
@@ -1176,7 +1176,7 @@ function _deletebeg!(a::Vector, delta::Integer)
1176
1176
end
1177
1177
newlen = len - delta
1178
1178
if newlen != 0 # if newlen==0 we could accidentally index past the memory
1179
- newref = @inbounds GenericMemoryRef (a. ref, delta + 1 )
1179
+ newref = @inbounds memoryref (a. ref, delta + 1 )
1180
1180
setfield! (a, :ref , newref)
1181
1181
end
1182
1182
setfield! (a, :size , (newlen,))
@@ -1491,16 +1491,16 @@ function sizehint!(a::Vector, sz::Integer; first::Bool=false, shrink::Bool=true)
1491
1491
end
1492
1492
newmem = array_new_memory (mem, sz)
1493
1493
if first
1494
- newref = GenericMemoryRef (newmem, inc + 1 )
1494
+ newref = memoryref (newmem, inc + 1 )
1495
1495
else
1496
- newref = GenericMemoryRef (newmem)
1496
+ newref = memoryref (newmem)
1497
1497
end
1498
1498
unsafe_copyto! (newref, ref, len)
1499
1499
setfield! (a, :ref , newref)
1500
1500
elseif first
1501
1501
_growbeg! (a, inc)
1502
1502
newref = getfield (a, :ref )
1503
- newref = GenericMemoryRef (newref, inc + 1 )
1503
+ newref = memoryref (newref, inc + 1 )
1504
1504
setfield! (a, :size , (len,)) # undo the size change from _growbeg!
1505
1505
setfield! (a, :ref , newref) # undo the offset change from _growbeg!
1506
1506
else # last
@@ -3075,15 +3075,17 @@ function _wrap(ref::MemoryRef{T}, dims::NTuple{N, Int}) where {T, N}
3075
3075
mem_len = length (mem) + 1 - memoryrefoffset (ref)
3076
3076
len = Core. checked_dims (dims... )
3077
3077
@boundscheck mem_len >= len || invalid_wrap_err (mem_len, dims, len)
3078
- if N != 1 && ! (ref === GenericMemoryRef (mem) && len === mem_len)
3078
+ if N != 1 && ! (ref === memoryref (mem) && len === mem_len)
3079
3079
mem = ccall (:jl_genericmemory_slice , Memory{T}, (Any, Ptr{Cvoid}, Int), mem, ref. ptr_or_offset, len)
3080
- ref = MemoryRef (mem)
3080
+ ref = memoryref (mem)
3081
3081
end
3082
3082
return ref
3083
3083
end
3084
3084
3085
- @noinline invalid_wrap_err (len, dims, proddims) = throw (DimensionMismatch (
3086
- " Attempted to wrap a MemoryRef of length $len with an Array of size dims=$dims , which is invalid because prod(dims) = $proddims > $len , so that the array would have more elements than the underlying memory can store." ))
3085
+ @noinline invalid_wrap_err (len, dims, proddims) = throw (DimensionMismatch (LazyString (
3086
+ " Attempted to wrap a MemoryRef of length " , len, " with an Array of size dims=" , dims,
3087
+ " which is invalid because prod(dims) = " , proddims, " > " , len,
3088
+ " so that the array would have more elements than the underlying memory can store." )))
3087
3089
3088
3090
@eval @propagate_inbounds function wrap (:: Type{Array} , m:: MemoryRef{T} , dims:: NTuple{N, Integer} ) where {T, N}
3089
3091
dims = convert (Dims, dims)
@@ -3093,7 +3095,7 @@ end
3093
3095
3094
3096
@eval @propagate_inbounds function wrap (:: Type{Array} , m:: Memory{T} , dims:: NTuple{N, Integer} ) where {T, N}
3095
3097
dims = convert (Dims, dims)
3096
- ref = _wrap (MemoryRef (m), dims)
3098
+ ref = _wrap (memoryref (m), dims)
3097
3099
$ (Expr (:new , :(Array{T, N}), :ref , :dims ))
3098
3100
end
3099
3101
@eval @propagate_inbounds function wrap (:: Type{Array} , m:: MemoryRef{T} , l:: Integer ) where {T}
@@ -3103,11 +3105,11 @@ end
3103
3105
end
3104
3106
@eval @propagate_inbounds function wrap (:: Type{Array} , m:: Memory{T} , l:: Integer ) where {T}
3105
3107
dims = (Int (l),)
3106
- ref = _wrap (MemoryRef (m), (l,))
3108
+ ref = _wrap (memoryref (m), (l,))
3107
3109
$ (Expr (:new , :(Array{T, 1 }), :ref , :dims ))
3108
3110
end
3109
3111
@eval @propagate_inbounds function wrap (:: Type{Array} , m:: Memory{T} ) where {T}
3110
- ref = MemoryRef (m)
3112
+ ref = memoryref (m)
3111
3113
dims = (length (m),)
3112
3114
$ (Expr (:new , :(Array{T, 1 }), :ref , :dims ))
3113
3115
end
0 commit comments