Skip to content

Commit 4a4aea0

Browse files
committed
Merge branch 'master' into dl/copytosupport
2 parents d366157 + 1be1788 commit 4a4aea0

File tree

5 files changed

+30
-33
lines changed

5 files changed

+30
-33
lines changed

src/BlockArrays.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Base: @propagate_inbounds, Array, to_indices, to_index,
2424
getindex, ndims, show,
2525
step,
2626
broadcast, eltype, convert, similar,
27-
@_inline_meta, tail, @_propagate_inbounds_meta, reindex,
27+
tail, reindex,
2828
RangeIndex, Int, Integer, Number,
2929
+, -, *, /, \, ==, min, max, isless, in, copy, copyto!, axes, @deprecate,
3030
BroadcastStyle, checkbounds, throw_boundserror,

src/blockaxis.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,7 @@ julia> blockaxes(A,1)
138138
Block(2)
139139
```
140140
"""
141-
function blockaxes(A::AbstractArray{T,N}, d) where {T,N}
142-
@_inline_meta
141+
@inline function blockaxes(A::AbstractArray{T,N}, d) where {T,N}
143142
d::Integer <= N ? blockaxes(A)[d] : Base.OneTo(1)
144143
end
145144

@@ -166,7 +165,7 @@ julia> blocksize(A,2)
166165
"""
167166
blocksize(A) = map(length, blockaxes(A))
168167
blocksize(A,i) = length(blockaxes(A,i))
169-
blocklength(t) = (@_inline_meta; prod(blocksize(t)))
168+
@inline blocklength(t) = prod(blocksize(t))
170169

171170
"""
172171
blocksizes(A)

src/blockdeque.jl

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,16 +230,19 @@ Base.append!(dest::BlockVector, sources...) = foldl(append!, sources; init = des
230230

231231
Base.append!(dest::BlockVector, src) = append_itr!(dest, Base.IteratorSize(src), src)
232232

233+
@inline function _append_itr_foldfn!(block,i,x)
234+
i += 1
235+
@inbounds block[i] = x
236+
return i
237+
end
238+
233239
function append_itr!(dest::BlockVector, ::Union{Base.HasShape,Base.HasLength}, src)
234240
block = dest.blocks[end]
235241
li = lastindex(block)
236242
resize!(block, length(block) + length(src))
237243
# Equivalent to `i = li; for x in src; ...; end` but (maybe) faster:
238244
foldl(src, init = li) do i, x
239-
Base.@_inline_meta
240-
i += 1
241-
@inbounds block[i] = x
242-
return i
245+
_append_itr_foldfn!(block,i,x)
243246
end
244247
da, = dest.axes
245248
da.lasts[end] += length(src)

src/pseudo_blockarray.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,8 @@ to_axes(n::Integer) = Base.oneto(n)
180180
@inline Base.similar(block_array::PseudoBlockArray, ::Type{T}, axes::Tuple{Union{Integer,AbstractUnitRange{Int}},BlockedUnitRange,Vararg{Union{Integer,AbstractUnitRange{Int}}}}) where T =
181181
PseudoBlockArray{T}(undef, map(to_axes,axes))
182182

183-
@inline Base.@propagate_inbounds Base.getindex(block_arr::PseudoBlockArray{T, N}, i::Vararg{Integer, N}) where {T,N} = block_arr.blocks[i...]
184-
@inline Base.@propagate_inbounds Base.setindex!(block_arr::PseudoBlockArray{T, N}, v, i::Vararg{Integer, N}) where {T,N} = setindex!(block_arr.blocks, v, i...)
183+
@inline @propagate_inbounds Base.getindex(block_arr::PseudoBlockArray{T, N}, i::Vararg{Integer, N}) where {T,N} = block_arr.blocks[i...]
184+
@inline @propagate_inbounds Base.setindex!(block_arr::PseudoBlockArray{T, N}, v, i::Vararg{Integer, N}) where {T,N} = setindex!(block_arr.blocks, v, i...)
185185

186186
################################
187187
# AbstractBlockArray Interface #
@@ -197,7 +197,7 @@ to_axes(n::Integer) = Base.oneto(n)
197197
return view(block_arr.blocks, range...)
198198
end
199199

200-
@inline Base.@propagate_inbounds function _pseudoblockindex_getindex(block_arr, blockindex)
200+
@inline @propagate_inbounds function _pseudoblockindex_getindex(block_arr, blockindex)
201201
I = getindex.(axes(block_arr), getindex.(Block.(blockindex.I), blockindex.α))
202202
block_arr.blocks[I...]
203203
end

src/views.jl

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,74 +44,69 @@ to_index(::BlockRange) = throw(ArgumentError("BlockRange must be converted by to
4444
@inline to_indices(A, I::Tuple{Block, Vararg{Any}}) = to_indices(A, axes(A), I)
4545
@inline to_indices(A, I::Tuple{BlockRange, Vararg{Any}}) = to_indices(A, axes(A), I)
4646

47-
reindex(idxs::Tuple{BlockSlice{<:BlockRange}, Vararg{Any}},
47+
@propagate_inbounds reindex(idxs::Tuple{BlockSlice{<:BlockRange}, Vararg{Any}},
4848
subidxs::Tuple{BlockSlice{<:BlockIndexRange}, Vararg{Any}}) =
49-
(@_propagate_inbounds_meta; (BlockSlice(BlockIndexRange(Block(idxs[1].block.indices[1][Int(subidxs[1].block.block)]),
49+
(BlockSlice(BlockIndexRange(Block(idxs[1].block.indices[1][Int(subidxs[1].block.block)]),
5050
subidxs[1].block.indices),
5151
idxs[1].indices[subidxs[1].indices]),
52-
reindex(tail(idxs), tail(subidxs))...))
53-
reindex(idxs::Tuple{BlockSlice{<:BlockRange}, Vararg{Any}},
52+
reindex(tail(idxs), tail(subidxs))...)
53+
@propagate_inbounds reindex(idxs::Tuple{BlockSlice{<:BlockRange}, Vararg{Any}},
5454
subidxs::Tuple{BlockSlice{<:Block}, Vararg{Any}}) =
55-
(@_propagate_inbounds_meta; (BlockSlice(idxs[1].block[Int(subidxs[1].block)],
55+
(BlockSlice(idxs[1].block[Int(subidxs[1].block)],
5656
idxs[1].indices[subidxs[1].indices]),
57-
reindex(tail(idxs), tail(subidxs))...))
57+
reindex(tail(idxs), tail(subidxs))...)
5858

59-
reindex(idxs::Tuple{BlockedUnitRange, Vararg{Any}},
59+
@propagate_inbounds reindex(idxs::Tuple{BlockedUnitRange, Vararg{Any}},
6060
subidxs::Tuple{BlockSlice{<:Block}, Vararg{Any}}) =
61-
(@_propagate_inbounds_meta; (BlockSlice(subidxs[1].block,
61+
(BlockSlice(subidxs[1].block,
6262
idxs[1][subidxs[1].block]),
63-
reindex(tail(idxs), tail(subidxs))...))
63+
reindex(tail(idxs), tail(subidxs))...)
6464
# _splatmap taken from Base:
6565
_splatmap(f, ::Tuple{}) = ()
6666
_splatmap(f, t::Tuple) = (f(t[1])..., _splatmap(f, tail(t))...)
6767

6868
# De-reference blocks before creating a view to avoid taking `global2blockindex`
6969
# path in `AbstractBlockStyle` broadcasting.
70-
@inline function Base.unsafe_view(
70+
@propagate_inbounds function Base.unsafe_view(
7171
A::BlockArray{<:Any, N},
7272
I::Vararg{BlockSlice{<:BlockIndexRange{1}}, N}) where {N}
73-
@_propagate_inbounds_meta
7473
B = view(A, map(block, I)...)
7574
return view(B, _splatmap(x -> x.block.indices, I)...)
7675
end
7776

78-
@inline function Base.unsafe_view(
77+
@propagate_inbounds function Base.unsafe_view(
7978
A::PseudoBlockArray{<:Any, N},
8079
I::Vararg{BlockSlice{<:BlockIndexRange{1}}, N}) where {N}
81-
@_propagate_inbounds_meta
8280
return view(A.blocks, map(x -> x.indices, I)...)
8381
end
8482

85-
@inline function Base.unsafe_view(
83+
@propagate_inbounds function Base.unsafe_view(
8684
A::ReshapedArray{<:Any, N, <:AbstractBlockArray{<:Any, M}},
8785
I::Vararg{BlockSlice{<:BlockIndexRange{1}}, N}) where {N, M}
88-
@_propagate_inbounds_meta
8986
# Note: assuming that I[M+1:end] are verified to be singletons
9087
return reshape(view(A.parent, I[1:M]...), Val(N))
9188
end
9289

93-
@inline function Base.unsafe_view(
90+
@propagate_inbounds function Base.unsafe_view(
9491
A::Array{<:Any, N},
9592
I::Vararg{BlockSlice{<:BlockIndexRange{1}}, N}) where {N}
96-
@_propagate_inbounds_meta
9793
return view(A, map(x -> x.indices, I)...)
9894
end
9995

10096
# make sure we reindex correctrly
101-
function Base._maybe_reindex(V, I::Tuple{BlockSlice{<:BlockIndexRange{1}}, Vararg{Any}}, ::Tuple{})
102-
@_inline_meta
97+
@inline function Base._maybe_reindex(V, I::Tuple{BlockSlice{<:BlockIndexRange{1}}, Vararg{Any}}, ::Tuple{})
10398
@inbounds idxs = to_indices(V.parent, reindex(V.indices, I))
10499
view(V.parent, idxs...)
105100
end
106101

107102

108103
# BlockSlices map the blocks and the indices
109104
# this is loosely based on Slice reindex in subarray.jl
110-
reindex(idxs::Tuple{BlockSlice{<:BlockRange}, Vararg{Any}},
105+
@propagate_inbounds reindex(idxs::Tuple{BlockSlice{<:BlockRange}, Vararg{Any}},
111106
subidxs::Tuple{BlockSlice{<:BlockRange}, Vararg{Any}}) =
112-
(@_propagate_inbounds_meta; (BlockSlice(BlockRange(idxs[1].block.indices[1][Int.(subidxs[1].block)]),
107+
(BlockSlice(BlockRange(idxs[1].block.indices[1][Int.(subidxs[1].block)]),
113108
idxs[1].indices[subidxs[1].block]),
114-
reindex(tail(idxs), tail(subidxs))...))
109+
reindex(tail(idxs), tail(subidxs))...)
115110

116111

117112
function reindex(idxs::Tuple{BlockSlice{Block{1,Int}}, Vararg{Any}},

0 commit comments

Comments
 (0)