Skip to content

Commit d2dd7f7

Browse files
committed
Make midpoint() backwards compatible
1 parent 0d4aa65 commit d2dd7f7

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/SortingAlgorithms.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -986,12 +986,15 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer,
986986
end
987987
end
988988

989+
# midpoint was added to Base.sort in version 1.4 and later moved to Base
990+
midpoint = Base.@static isdefined(Base, :midpoint) ? Base.midpoint : isdefined(Base.Sort, :midpoint) ? Base.Sort.midpoint : (lo,hi) -> lo + ((hi - lo) >>> 0x01)
991+
989992
function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T
990993
len = hi + 1 -lo
991994
if len <= Base.SMALL_THRESHOLD
992995
return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o)
993996
end
994-
m = Base.midpoint(lo,hi)
997+
m = midpoint(lo,hi)
995998
pagedmergesort!(v,lo,m,buf,blockLocation,o)
996999
pagedmergesort!(v,m+1,hi,buf,blockLocation,o)
9971000
if len <= length(buf)
@@ -1007,7 +1010,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b
10071010
if len <= Base.SMALL_THRESHOLD
10081011
return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o)
10091012
end
1010-
m = Base.midpoint(lo,hi)
1013+
m = midpoint(lo,hi)
10111014
if len > threadingThreshold
10121015
thr = Threads.@spawn threaded_pagedmergesort!(v,lo,m,bufs,blockLocations,c,threadingThreshold,o)
10131016
threaded_pagedmergesort!(v,m+1,hi,bufs,blockLocations,c,threadingThreshold,o)

0 commit comments

Comments
 (0)