b483cc12d0
Bug: v8:7980 Change-Id: Ic4c72b02c196b296105a6ddf9c3af9fb699ef8c5 Reviewed-on: https://chromium-review.googlesource.com/c/1297327 Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Hai Dang <dhai@google.com> Cr-Commit-Position: refs/heads/master@{#56952}
174 lines
5.1 KiB
JavaScript
174 lines
5.1 KiB
JavaScript
// 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.
|
|
(() => {
|
|
|
|
createSuite('MixedFrom', 1000, MixedFrom, MixedFromSetup);
|
|
createSuite('MixedNoMapFrom', 1000, MixedNoMapFrom, MixedNoMapFromSetup);
|
|
createSuite('SmiFrom', 1000, SmiFrom, SmiFromSetup);
|
|
createSuite('SmallSmiFrom', 1000, SmallSmiFrom, SmallSmiFromSetup);
|
|
createSuite('SmiNoMapFrom', 1000, SmiNoMapFrom, SmiNoMapFromSetup);
|
|
createSuite(
|
|
'SmiNoIteratorFrom', 1000, SmiNoIteratorFrom, SmiNoIteratorFromSetup);
|
|
createSuite(
|
|
'TransplantedFrom', 1000, TransplantedFrom, TransplantedFromSetup);
|
|
createSuite('DoubleFrom', 1000, DoubleFrom, DoubleFromSetup);
|
|
createSuite('DoubleNoMapFrom', 1000, DoubleNoMapFrom, DoubleNoMapFromSetup);
|
|
createSuite('StringFrom', 1000, StringFrom, StringFromSetup);
|
|
createSuite('StringNoMapFrom', 1000, StringNoMapFrom, StringNoMapFromSetup);
|
|
|
|
function ArrayLike() {}
|
|
ArrayLike.from = Array.from;
|
|
|
|
var arg
|
|
var result;
|
|
var func
|
|
|
|
var smi_array = [
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
];
|
|
|
|
var double_array = [
|
|
1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, //
|
|
11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5,
|
|
1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, //
|
|
11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5,
|
|
1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, //
|
|
11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5,
|
|
1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, //
|
|
11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5,
|
|
1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, //
|
|
11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5,
|
|
];
|
|
|
|
var string_array = [
|
|
'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'a', 'b', 'c', 'a', 'b',
|
|
'c', 'a', 'b', 'c', 'a', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a',
|
|
'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'a', 'b', 'c', 'a', 'b',
|
|
'c', 'a', 'b', 'c', 'a', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a',
|
|
'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'a', 'b', 'c', 'a', 'b',
|
|
'c', 'a', 'b', 'c', 'a', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a',
|
|
'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a',
|
|
];
|
|
|
|
var mixed_array = [
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
|
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, //
|
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
|
|
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, //
|
|
1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5,
|
|
11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5, //
|
|
1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5,
|
|
11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5, //
|
|
'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a',
|
|
'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a',
|
|
];
|
|
|
|
// Although these functions have the same code, they are separated for
|
|
// clean IC feedback.
|
|
function SmallSmiFrom() {
|
|
result = Array.from(arg, func);
|
|
}
|
|
|
|
function SmiNoMapFrom() {
|
|
result = Array.from(arg);
|
|
}
|
|
|
|
function SmiFrom() {
|
|
result = Array.from(arg, func);
|
|
}
|
|
|
|
function SmiNoIteratorFrom() {
|
|
result = Array.from(arg, func);
|
|
}
|
|
|
|
function TransplantedFrom() {
|
|
result = ArrayLike.from(arg, func);
|
|
}
|
|
|
|
function DoubleFrom() {
|
|
result = Array.from(arg, func);
|
|
}
|
|
|
|
function DoubleNoMapFrom() {
|
|
result = Array.from(arg);
|
|
}
|
|
|
|
function StringFrom() {
|
|
result = Array.from(arg, func);
|
|
}
|
|
|
|
function StringNoMapFrom() {
|
|
result = Array.from(arg);
|
|
}
|
|
|
|
function MixedFrom() {
|
|
result = Array.from(arg, func);
|
|
}
|
|
|
|
function MixedNoMapFrom() {
|
|
result = Array.from(arg);
|
|
}
|
|
|
|
function SmallSmiFromSetup() {
|
|
func = (v, i) => v + i;
|
|
arg = [1, 2, 3];
|
|
}
|
|
|
|
function SmiNoMapFromSetup() {
|
|
func = undefined;
|
|
arg = smi_array;
|
|
}
|
|
|
|
function SmiFromSetup() {
|
|
func = (v, i) => v + i;
|
|
arg = smi_array;
|
|
}
|
|
|
|
function SmiNoIteratorFromSetup() {
|
|
func = (v, i) => v + i;
|
|
array = smi_array;
|
|
arg = {length: array.length};
|
|
Object.assign(arg, array);
|
|
}
|
|
|
|
function TransplantedFromSetup() {
|
|
func = (v, i) => v + i;
|
|
arg = smi_array;
|
|
}
|
|
|
|
function DoubleFromSetup() {
|
|
func = (v, i) => v + i;
|
|
arg = double_array;
|
|
}
|
|
|
|
function DoubleNoMapFromSetup() {
|
|
func = undefined;
|
|
arg = double_array;
|
|
}
|
|
|
|
function StringFromSetup() {
|
|
func = (v, i) => v + i;
|
|
arg = string_array;
|
|
}
|
|
|
|
function StringNoMapFromSetup() {
|
|
func = undefined;
|
|
arg = string_array;
|
|
}
|
|
|
|
function MixedFromSetup() {
|
|
func = (v, i) => v + i;
|
|
arg = mixed_array;
|
|
}
|
|
|
|
function MixedNoMapFromSetup() {
|
|
func = undefined;
|
|
arg = mixed_array;
|
|
}
|
|
})();
|