@@ -986,12 +986,15 @@ 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
+ midpoint = Base. @static isdefined (Base, :midpoint ) ? Base. midpoint : isdefined (Base. Sort, :midpoint ) ? Base. Sort. midpoint : (lo,hi) -> lo + ((hi - lo) >>> 0x01 )
991
+
989
992
function pagedmergesort! (v:: AbstractVector{T} , lo:: Integer , hi:: Integer , buf:: AbstractVector{T} , blockLocation, o= Base. Order. Forward) where T
990
993
len = hi + 1 - lo
991
994
if len <= Base. SMALL_THRESHOLD
992
995
return Base. Sort. sort! (v, lo, hi, Base. Sort. InsertionSortAlg (), o)
993
996
end
994
- m = Base . midpoint (lo,hi)
997
+ m = midpoint (lo,hi)
995
998
pagedmergesort! (v,lo,m,buf,blockLocation,o)
996
999
pagedmergesort! (v,m+ 1 ,hi,buf,blockLocation,o)
997
1000
if len <= length (buf)
@@ -1007,7 +1010,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b
1007
1010
if len <= Base. SMALL_THRESHOLD
1008
1011
return Base. Sort. sort! (v, lo, hi, Base. Sort. InsertionSortAlg (), o)
1009
1012
end
1010
- m = Base . midpoint (lo,hi)
1013
+ m = midpoint (lo,hi)
1011
1014
if len > threadingThreshold
1012
1015
thr = Threads. @spawn threaded_pagedmergesort! (v,lo,m,bufs,blockLocations,c,threadingThreshold,o)
1013
1016
threaded_pagedmergesort! (v,m+ 1 ,hi,bufs,blockLocations,c,threadingThreshold,o)
0 commit comments