Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F8393606
es.typed-array.sort.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
es.typed-array.sort.js
View Options
'use strict'
;
var
global
=
require
(
'../internals/global'
);
var
uncurryThis
=
require
(
'../internals/function-uncurry-this'
);
var
fails
=
require
(
'../internals/fails'
);
var
aCallable
=
require
(
'../internals/a-callable'
);
var
internalSort
=
require
(
'../internals/array-sort'
);
var
ArrayBufferViewCore
=
require
(
'../internals/array-buffer-view-core'
);
var
FF
=
require
(
'../internals/engine-ff-version'
);
var
IE_OR_EDGE
=
require
(
'../internals/engine-is-ie-or-edge'
);
var
V8
=
require
(
'../internals/engine-v8-version'
);
var
WEBKIT
=
require
(
'../internals/engine-webkit-version'
);
var
aTypedArray
=
ArrayBufferViewCore
.
aTypedArray
;
var
exportTypedArrayMethod
=
ArrayBufferViewCore
.
exportTypedArrayMethod
;
var
Uint16Array
=
global
.
Uint16Array
;
var
nativeSort
=
Uint16Array
&&
uncurryThis
(
Uint16Array
.
prototype
.
sort
);
// WebKit
var
ACCEPT_INCORRECT_ARGUMENTS
=
!!
nativeSort
&&
!
(
fails
(
function
()
{
nativeSort
(
new
Uint16Array
(
2
),
null
);
})
&&
fails
(
function
()
{
nativeSort
(
new
Uint16Array
(
2
),
{});
}));
var
STABLE_SORT
=
!!
nativeSort
&&
!
fails
(
function
()
{
// feature detection can be too slow, so check engines versions
if
(
V8
)
return
V8
<
74
;
if
(
FF
)
return
FF
<
67
;
if
(
IE_OR_EDGE
)
return
true
;
if
(
WEBKIT
)
return
WEBKIT
<
602
;
var
array
=
new
Uint16Array
(
516
);
var
expected
=
Array
(
516
);
var
index
,
mod
;
for
(
index
=
0
;
index
<
516
;
index
++
)
{
mod
=
index
%
4
;
array
[
index
]
=
515
-
index
;
expected
[
index
]
=
index
-
2
*
mod
+
3
;
}
nativeSort
(
array
,
function
(
a
,
b
)
{
return
(
a
/
4
|
0
)
-
(
b
/
4
|
0
);
});
for
(
index
=
0
;
index
<
516
;
index
++
)
{
if
(
array
[
index
]
!==
expected
[
index
])
return
true
;
}
});
var
getSortCompare
=
function
(
comparefn
)
{
return
function
(
x
,
y
)
{
if
(
comparefn
!==
undefined
)
return
+
comparefn
(
x
,
y
)
||
0
;
// eslint-disable-next-line no-self-compare -- NaN check
if
(
y
!==
y
)
return
-
1
;
// eslint-disable-next-line no-self-compare -- NaN check
if
(
x
!==
x
)
return
1
;
if
(
x
===
0
&&
y
===
0
)
return
1
/
x
>
0
&&
1
/
y
<
0
?
1
:
-
1
;
return
x
>
y
;
};
};
// `%TypedArray%.prototype.sort` method
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort
exportTypedArrayMethod
(
'sort'
,
function
sort
(
comparefn
)
{
if
(
comparefn
!==
undefined
)
aCallable
(
comparefn
);
if
(
STABLE_SORT
)
return
nativeSort
(
this
,
comparefn
);
return
internalSort
(
aTypedArray
(
this
),
getSortCompare
(
comparefn
));
},
!
STABLE_SORT
||
ACCEPT_INCORRECT_ARGUMENTS
);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jun 4, 7:15 PM (1 w, 12 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3367742
Attached To
rDWAPPS Web applications
Event Timeline
Log In to Comment