2018-04-12 10:41:39 +00:00
|
|
|
// Copyright 2018 the V8 project authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
|
|
|
load('sort-base.js');
|
|
|
|
|
|
|
|
// Creates a comparison function, that will call the provided transform function
|
|
|
|
// after a set amount of comparisons. The transform function should cause the
|
|
|
|
// element kind of the array to change.
|
|
|
|
function CreateCompareFn(transformfn) {
|
|
|
|
return (a, b) => {
|
|
|
|
++counter;
|
|
|
|
if (counter == kArraySize/2) {
|
|
|
|
transformfn();
|
|
|
|
}
|
|
|
|
|
|
|
|
return cmp_smaller(a, b);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
let cmp_packed_smi_to_double = CreateCompareFn(() => array_to_sort.push(0.1));
|
|
|
|
let cmp_holey_smi_to_double = CreateCompareFn(() => array_to_sort.push(0.1));
|
|
|
|
let cmp_double_to_double = CreateCompareFn(() => array_to_sort.length *= 2);
|
|
|
|
|
2018-06-19 05:55:22 +00:00
|
|
|
createSortSuite(
|
2018-05-24 14:26:15 +00:00
|
|
|
'PackedSmiToPackedDouble', 1000, CreateSortFn([cmp_packed_smi_to_double]),
|
|
|
|
CreatePackedSmiArray, AssertPackedDoubleElements);
|
2018-06-19 05:55:22 +00:00
|
|
|
createSortSuite(
|
2018-05-24 14:26:15 +00:00
|
|
|
'HoleySmiToHoleyDouble', 1000, CreateSortFn([cmp_holey_smi_to_double]),
|
|
|
|
CreateHoleySmiArray, AssertHoleyDoubleElements);
|
2018-06-19 05:55:22 +00:00
|
|
|
createSortSuite(
|
2018-05-24 14:26:15 +00:00
|
|
|
'PackedDoubleToHoleyDouble', 1000, CreateSortFn([cmp_double_to_double]),
|
|
|
|
CreatePackedDoubleArray, AssertHoleyDoubleElements);
|
2018-04-12 10:41:39 +00:00
|
|
|
|
|
|
|
let cmp_packed_to_dict = CreateCompareFn(() => array_to_sort[%MaxSmi()] = 42);
|
|
|
|
let cmp_holey_to_dict = CreateCompareFn(() => array_to_sort[%MaxSmi()] = 42);
|
|
|
|
|
2018-06-19 05:55:22 +00:00
|
|
|
createSortSuite(
|
2018-05-24 14:26:15 +00:00
|
|
|
'PackedElementToDictionary', 1000, CreateSortFn([cmp_packed_to_dict]),
|
|
|
|
CreatePackedObjectArray, AssertDictionaryElements);
|
2018-06-19 05:55:22 +00:00
|
|
|
createSortSuite(
|
2018-05-24 14:26:15 +00:00
|
|
|
'HoleyElementToDictionary', 1000, CreateSortFn([cmp_holey_to_dict]),
|
|
|
|
CreateHoleyObjectArray, AssertDictionaryElements);
|