Skip to content

Commit ef0c35f

Browse files
committed
eliminate another turing machines from subarray (find_extended_dims)
1 parent 85ef52c commit ef0c35f

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

base/subarray.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ end
264264
# indexing uses the indices along the given dimension. Otherwise
265265
# linear indexing always starts with 1.
266266
compute_offset1(parent, stride1::Integer, I::Tuple) =
267-
(@_inline_meta; compute_offset1(parent, stride1, find_extended_dims(I)..., I))
267+
(@_inline_meta; compute_offset1(parent, stride1, find_extended_dims(1, I...), find_extended_inds(I...), I))
268268
compute_offset1(parent, stride1::Integer, dims::Tuple{Int}, inds::Tuple{Slice}, I::Tuple) =
269269
(@_inline_meta; compute_linindex(parent, I) - stride1*first(indices(parent, dims[1]))) # index-preserving case
270270
compute_offset1(parent, stride1::Integer, dims, inds, I::Tuple) =
@@ -287,12 +287,12 @@ function compute_linindex(f, s, IP::Tuple, I::Tuple{Any, Vararg{Any}})
287287
end
288288
compute_linindex(f, s, IP::Tuple, I::Tuple{}) = f
289289

290-
find_extended_dims(I) = (@_inline_meta; _find_extended_dims((), (), 1, I...))
291-
_find_extended_dims(dims, inds, dim) = dims, inds
292-
_find_extended_dims(dims, inds, dim, ::ScalarIndex, I...) =
293-
(@_inline_meta; _find_extended_dims(dims, inds, dim+1, I...))
294-
_find_extended_dims(dims, inds, dim, i1, I...) =
295-
(@_inline_meta; _find_extended_dims((dims..., dim), (inds..., i1), dim+1, I...))
290+
find_extended_dims(dim, ::ScalarIndex, I...) = (@_inline_meta; find_extended_dims(dim + 1, I...))
291+
find_extended_dims(dim, i1, I...) = (@_inline_meta; (dim, find_extended_dims(dim + 1, I...)...))
292+
find_extended_dims(dim) = ()
293+
find_extended_inds(::ScalarIndex, I...) = (@_inline_meta; find_extended_inds(I...))
294+
find_extended_inds(i1, I...) = (@_inline_meta; (i1, find_extended_inds(I...)...))
295+
find_extended_inds() = ()
296296

297297
unsafe_convert(::Type{Ptr{T}}, V::SubArray{T,N,P,<:Tuple{Vararg{RangeIndex}}}) where {T,N,P} =
298298
unsafe_convert(Ptr{T}, V.parent) + (first_index(V)-1)*sizeof(T)

0 commit comments

Comments
 (0)