v8/test/webkit/fast/js
Hai Dang 5f8a42727d Reland "[interpreter] Add bytecode for leading array spreads."
This is a reland of 1c48d52bb1.

It turned out that IterableToList doesn't always behave according to
the ES operation with the same name. Specifically, it allows holey arrays
to take its fast path, which produces an output array with holes where
actually "undefined" elements should appear.

This CL changes the version of IterableToList that is used for spreads
(IterableToListWithSymbolLookup) such that holey arrays take the slow path.
It also includes tests for such situations.

Original change's description:
> [interpreter] Add bytecode for leading array spreads.
>
> This CL improves the performance of creating [...a, b] or [...a].
> If the array literal has a leading spread, this CL emits the bytecode
> [CreateArrayFromIterable] to create the literal. CreateArrayFromIterable
> is implemented by [IterableToListDefault] builtin to create the initial
> array for the leading spread. IterableToListDefault has a fast path to
> clone efficiently if the spread is an actual array.
>
> The bytecode generated is now shorter. Bytecode generation is refactored
> into to BuildCreateArrayLiteral, which allows VisitCallSuper to benefit
> from this optimization also.
> For now, turbofan also lowers the bytecode to the builtin.
>
> The idiomatic use of [...a] to clone the array a now performs better
> than a simple for-loop, but still does not match the performance of slice.
>
> Bug: v8:7980
>
> Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
> Change-Id: Ibde659c82d3c7aa1b1777a3d2f6426ac8cc15e35
> Reviewed-on: https://chromium-review.googlesource.com/1181024
> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
> Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Commit-Queue: Georg Neis <neis@chromium.org>
> Commit-Queue: Hai Dang <dhai@google.com>
> Cr-Commit-Position: refs/heads/master@{#55520}

Bug: v8:7980
Change-Id: I0b5603a12d2b588327658bf0a9b214bd0f22e237
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/1201882
Commit-Queue: Hai Dang <dhai@google.com>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55639}
2018-09-05 09:29:51 +00:00
..
kde Fix common misspellings 2017-08-02 09:35:28 +00:00
arguments-expected.txt Pass legacy const runtime flag to preparser appropriately 2016-03-18 01:09:17 +00:00
arguments.js Pass legacy const runtime flag to preparser appropriately 2016-03-18 01:09:17 +00:00
array-bad-time-expected.txt Change test expectations for webkit/fast/js/object-slow-put and friends. 2013-11-06 16:38:40 +00:00
array-bad-time.js Change test expectations for webkit/fast/js/object-slow-put and friends. 2013-11-06 16:38:40 +00:00
array-float-delete-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
array-float-delete.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
array-functions-non-arrays-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
array-functions-non-arrays.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
array-prototype-properties-expected.txt [js] Remove CHECK_OBJECT_COERCIBLE for Array methods 2017-10-20 19:29:36 +00:00
array-prototype-properties.js [js] Remove CHECK_OBJECT_COERCIBLE for Array methods 2017-10-20 19:29:36 +00:00
array-slow-put-expected.txt Change test expectations for webkit/fast/js/object-slow-put and friends. 2013-11-06 16:38:40 +00:00
array-slow-put.js Change test expectations for webkit/fast/js/object-slow-put and friends. 2013-11-06 16:38:40 +00:00
array-tostring-ignore-separator-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
array-tostring-ignore-separator.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
basic-strict-mode-expected.txt [runtime] Create only one instance of %ThrowTypeError%. 2017-07-10 08:26:02 +00:00
basic-strict-mode.js Remove the 'caller' property from the strict-mode arguments map 2016-11-04 14:30:29 +00:00
date-big-setmonth-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
date-big-setmonth.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
date-negative-setmonth-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
date-negative-setmonth.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
date-preserve-milliseconds-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
date-preserve-milliseconds.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
date-toisostring-expected.txt Adjust test expectations to new error on method not found 2014-01-31 17:39:59 +00:00
date-toisostring.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
deep-recursion-test-expected.txt Migrate more tests from blink repository. 2013-07-30 06:36:48 +00:00
deep-recursion-test.js [compiler] Make --debug-code the default in debug builds. 2016-12-02 11:36:55 +00:00
end-in-string-escape-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
end-in-string-escape.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
exception-properties-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
exception-properties.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
exception-registerfile-shrink-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
exception-registerfile-shrink.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
excessive-comma-usage-expected.txt [test] Shorten excessive webkit test. 2015-07-28 10:17:29 +00:00
excessive-comma-usage.js [test] Slim down test that exceeds stack limit 2016-04-21 08:37:20 +00:00
function-apply-expected.txt [es6] Correct Function.prototype.apply, Reflect.construct and Reflect.apply. 2015-12-17 08:41:19 +00:00
function-apply.js [es6] Correct Function.prototype.apply, Reflect.construct and Reflect.apply. 2015-12-17 08:41:19 +00:00
function-constructor-error-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
function-constructor-error.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
function-decompilation-operators-expected.txt Migrate more tests from blink repository. 2013-07-30 06:36:48 +00:00
function-decompilation-operators.js Make sure files end with exactly one new line and police this in presubmit. 2013-11-22 13:50:39 +00:00
function-toString-parentheses-expected.txt Ship ES2015 sloppy-mode const semantics 2016-01-11 23:09:59 +00:00
function-toString-parentheses.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
function-toString-semicolon-insertion-expected.txt Adjust whitespace to make tests oblivious to --harmony-function-tostring 2016-07-22 00:18:41 +00:00
function-toString-semicolon-insertion.js Adjust whitespace to make tests oblivious to --harmony-function-tostring 2016-07-22 00:18:41 +00:00
JSON-parse-reviver-expected.txt JSON.parse: properly deal with reviver result 2015-12-10 12:49:06 +00:00
JSON-parse-reviver.js JSON.parse: properly deal with reviver result 2015-12-10 12:49:06 +00:00
modify-non-references-expected.txt Make invalid LHSs that are calls late errors 2014-04-02 11:03:05 +00:00
modify-non-references.js Make invalid LHSs that are calls late errors 2014-04-02 11:03:05 +00:00
native-error-prototype-expected.txt Support intriscDefaultProto for Error functions 2015-12-09 07:53:34 +00:00
native-error-prototype.js Support intriscDefaultProto for Error functions 2015-12-09 07:53:34 +00:00
number-tofixed-expected.txt [builtins] Increase precision limits for toFixed, etc 2017-07-20 13:05:35 +00:00
number-tofixed.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
number-toprecision-expected.txt [builtins] Increase precision limits for toFixed, etc 2017-07-20 13:05:35 +00:00
number-toprecision.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
number-toString-expected.txt Reimplement Number.prototype.toString with non-default radix. 2016-11-24 10:30:46 +00:00
number-toString.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
numeric-escapes-in-string-literals-expected.txt Change error messages for octal escape sequences 2016-12-07 17:26:42 +00:00
numeric-escapes-in-string-literals.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-bad-time-expected.txt Change test expectations for webkit/fast/js/object-slow-put and friends. 2013-11-06 16:38:40 +00:00
object-bad-time.js Change test expectations for webkit/fast/js/object-slow-put and friends. 2013-11-06 16:38:40 +00:00
Object-defineProperty-expected.txt Emit better error message about writable properties 2015-10-14 19:22:27 +00:00
Object-defineProperty.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-extra-comma-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-extra-comma.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-prototype-constructor-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-prototype-constructor.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-prototype-properties-expected.txt Correctify instanceof and make it optimizable. 2015-08-25 04:48:54 +00:00
object-prototype-properties.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-prototype-toLocaleString-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-prototype-toLocaleString.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
object-slow-put-expected.txt Change test expectations for webkit/fast/js/object-slow-put and friends. 2013-11-06 16:38:40 +00:00
object-slow-put.js Change test expectations for webkit/fast/js/object-slow-put and friends. 2013-11-06 16:38:40 +00:00
parser-syntax-check-expected.txt [ESNext] Ship optional catch binding 2018-01-19 00:35:16 +00:00
parser-syntax-check.js [ESNext] Ship optional catch binding 2018-01-19 00:35:16 +00:00
primitive-property-access-edge-cases-expected.txt Improving error messages when adding properties to non JSObject receiver in 2015-10-09 09:12:47 +00:00
primitive-property-access-edge-cases.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
Promise-already-rejected-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-already-rejected.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-already-resolved-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-already-resolved.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-catch-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-catch.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-chained-then-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-chained-then.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-exception-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-exception.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-init-callback-receiver-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-init-callback-receiver.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-init-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-init.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-onFulfilled-deep-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-onFulfilled-deep.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-onRejected-deep-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-onRejected-deep.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-reject-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-reject.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-chain-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-chain.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-state-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-state.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-with-itself-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-with-itself.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-with-then-exception-expected.txt [builtins] Properly reject immediately throwing thenables. 2018-04-24 07:55:00 +00:00
Promise-resolve-with-then-exception.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-with-then-fulfill-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-with-then-fulfill.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-with-then-reject-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve-with-then-reject.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-resolve.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-simple-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-simple.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-static-all-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-static-all.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-static-cast-expected.txt Remove Promise.cast 2014-03-18 15:03:35 +00:00
Promise-static-cast.js Remove Promise.cast 2014-03-18 15:03:35 +00:00
Promise-static-race-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-static-race.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-static-reject-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-static-reject.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-static-resolve-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-static-resolve.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-then-callback-receiver-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-then-callback-receiver.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-then-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-then-without-callbacks-expected.txt Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-then-without-callbacks.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
Promise-then.js Import Blink layout tests for Promises. 2014-03-10 12:30:47 +00:00
read-modify-eval-expected.txt Improving error messages when adding properties to non JSObject receiver in 2015-10-09 09:12:47 +00:00
read-modify-eval.js Fix common misspellings 2017-08-02 09:35:28 +00:00
regexp-bol-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-bol-with-multiline-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-bol-with-multiline.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-bol.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-extended-characters-crash-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-extended-characters-crash.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-lastindex-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-lastindex.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-look-ahead-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-look-ahead.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-no-extensions-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-no-extensions.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-non-capturing-groups-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-non-capturing-groups.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-non-greedy-parentheses-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-non-greedy-parentheses.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-range-out-of-order-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-range-out-of-order.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-ranges-and-escaped-hyphens-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-ranges-and-escaped-hyphens.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-stack-overflow-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-stack-overflow.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-unicode-handling-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
regexp-unicode-handling.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
reserved-words-strict-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
reserved-words-strict.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
string-anchor-expected.txt Rebaseline webkit test expectations after r22938. 2014-08-06 15:31:35 +00:00
string-anchor.js Make sure files end with exactly one new line and police this in presubmit. 2013-11-22 13:50:39 +00:00
string-capitalization-expected.txt Turn on icu_case_mapping by default 2017-01-19 21:45:12 +00:00
string-capitalization.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
string-fontcolor-expected.txt Rebaseline webkit test expectations after r22938. 2014-08-06 15:31:35 +00:00
string-fontcolor.js Make sure files end with exactly one new line and police this in presubmit. 2013-11-22 13:50:39 +00:00
string-fontsize-expected.txt Rebaseline webkit test expectations after r22938. 2014-08-06 15:31:35 +00:00
string-fontsize.js Make sure files end with exactly one new line and police this in presubmit. 2013-11-22 13:50:39 +00:00
string-link-expected.txt Rebaseline webkit test expectations after r22938. 2014-08-06 15:31:35 +00:00
string-link.js Make sure files end with exactly one new line and police this in presubmit. 2013-11-22 13:50:39 +00:00
string-split-conformance-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
string-split-conformance.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
string-split-double-empty-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
string-split-double-empty.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
string-split-ignore-case-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
string-split-ignore-case.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
toString-exception-expected.txt Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
toString-exception.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00
toString-number-expected.txt Reimplement Number.prototype.toString with non-default radix. 2016-11-24 10:30:46 +00:00
toString-number.js Make sure files end with exactly one new line and police this in presubmit. 2013-11-22 13:50:39 +00:00
toString-overrides-expected.txt Reland "[interpreter] Add bytecode for leading array spreads." 2018-09-05 09:29:51 +00:00
toString-overrides.js Migrate more tests from blink repository. 2013-07-25 19:54:24 +00:00