Skip to content

Commit a5d5cea

Browse files
committed
Make midpoint() backwards compatible
1 parent b33b4e8 commit a5d5cea

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/SortingAlgorithms.jl

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -991,12 +991,16 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer,
991991
end
992992
end
993993

994+
# midpoint was added to Base.sort in version 1.4 and later moved to Base
995+
# -> redefine for compatibility with earlier versions
996+
_midpoint(lo::Integer,hi::Integer) = lo + ((hi - lo) >>> 0x01)
997+
994998
function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T
995999
len = hi + 1 -lo
9961000
if len <= Base.SMALL_THRESHOLD
9971001
return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o)
9981002
end
999-
m = Base.midpoint(lo,hi)
1003+
m = _midpoint(lo,hi)
10001004
pagedmergesort!(v,lo,m,buf,blockLocation,o)
10011005
pagedmergesort!(v,m+1,hi,buf,blockLocation,o)
10021006
if len <= length(buf)
@@ -1012,7 +1016,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b
10121016
if len <= Base.SMALL_THRESHOLD
10131017
return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o)
10141018
end
1015-
m = Base.midpoint(lo,hi)
1019+
m = _midpoint(lo,hi)
10161020
if len > threadingThreshold
10171021
thr = Threads.@spawn threaded_pagedmergesort!(v,lo,m,bufs,blockLocations,c,threadingThreshold,o)
10181022
threaded_pagedmergesort!(v,m+1,hi,bufs,blockLocations,c,threadingThreshold,o)

0 commit comments

Comments
 (0)