@@ -986,12 +986,16 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer,
986
986
end
987
987
end
988
988
989
+ # midpoint was added to Base.sort in version 1.4 and later moved to Base
990
+ # -> redefine for compatibility with earlier versions
991
+ _midpoint (lo:: Integer ,hi:: Integer ) = lo + ((hi - lo) >>> 0x01 )
992
+
989
993
function pagedmergesort! (v:: AbstractVector{T} , lo:: Integer , hi:: Integer , buf:: AbstractVector{T} , blockLocation, o= Base. Order. Forward) where T
990
994
len = hi + 1 - lo
991
995
if len <= Base. SMALL_THRESHOLD
992
996
return Base. Sort. sort! (v, lo, hi, Base. Sort. InsertionSortAlg (), o)
993
997
end
994
- m = Base . midpoint (lo,hi)
998
+ m = _midpoint (lo,hi)
995
999
pagedmergesort! (v,lo,m,buf,blockLocation,o)
996
1000
pagedmergesort! (v,m+ 1 ,hi,buf,blockLocation,o)
997
1001
if len <= length (buf)
@@ -1007,7 +1011,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b
1007
1011
if len <= Base. SMALL_THRESHOLD
1008
1012
return Base. Sort. sort! (v, lo, hi, Base. Sort. InsertionSortAlg (), o)
1009
1013
end
1010
- m = Base . midpoint (lo,hi)
1014
+ m = _midpoint (lo,hi)
1011
1015
if len > threadingThreshold
1012
1016
thr = Threads. @spawn threaded_pagedmergesort! (v,lo,m,bufs,blockLocations,c,threadingThreshold,o)
1013
1017
threaded_pagedmergesort! (v,m+ 1 ,hi,bufs,blockLocations,c,threadingThreshold,o)
0 commit comments