v8/test/cctest
Hai Dang 1c48d52bb1 [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}
2018-08-30 11:47:58 +00:00
..
compiler [wasm] Remove WasmCompilationData 2018-08-23 14:31:43 +00:00
heap Reland "[heap] Attempt to incorporate backing store counters into heap sizing and GC trigger stragery." 2018-08-28 12:41:53 +00:00
interpreter [interpreter] Add bytecode for leading array spreads. 2018-08-30 11:47:58 +00:00
libplatform [tracing] Custom tag for the traceEvents array 2018-05-07 16:54:59 +00:00
libsampler Include only stuff you need, part 6: Fix cctest.h. 2016-09-01 12:02:16 +00:00
parsing [Scanner] Add support for cloning character streams. 2018-08-28 09:45:24 +00:00
torque [torque] add typeswitch statement 2018-08-08 07:49:42 +00:00
wasm [compiler] Remove AtomicNarrow machine operators, macroize tests 2018-08-29 16:11:48 +00:00
assembler-helper-arm.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
assembler-helper-arm.h Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
BUILD.gn [arm] Implement I64Atomic operations on Arm 2018-08-25 09:59:17 +00:00
cctest.cc [wasm] Add new API for enabling trap handler 2018-03-20 18:06:38 +00:00
cctest.h [assembler] Move reloc info to its own file 2018-08-17 09:54:28 +00:00
cctest.status PPC/s390: skip I64Atomic test on ppc/s390 2018-08-28 04:47:04 +00:00
DEPS [torque]: Add the ability to test Torque functionality with cctest 2018-05-13 10:58:56 +00:00
expression-type-collector-macros.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
gay-fixed.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-fixed.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
gay-precision.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-precision.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
gay-shortest.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-shortest.h [presubmit] Enable readability/namespace linter checking. 2015-09-30 13:47:11 +00:00
log-eq-of-logging-and-traversal.js [log] Improve log parsing 2018-06-20 13:40:22 +00:00
OWNERS Update MIPS file ownership to @wavecomp.com e-mail addresses 2018-07-26 16:28:10 +00:00
print-extension.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
print-extension.h [iwyu] More iwyu fixes (date, execution etc.) 2018-02-26 08:59:59 +00:00
profiler-extension.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
profiler-extension.h Introduce v8::CpuProfiler::New and v8::CpuProfiler::Dispose API. 2016-07-08 15:01:10 +00:00
scope-test-helper.h Fix a Jumbo breakage 2018-05-29 14:36:48 +00:00
setup-isolate-for-tests.cc [heap] remove heap init from shipping binary. 2017-09-07 05:24:49 +00:00
setup-isolate-for-tests.h [heap] remove heap init from shipping binary. 2017-09-07 05:24:49 +00:00
test-access-checks.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
test-accessor-assembler.cc [in-place weak refs] Replace WeakCells in StubCache. 2018-05-23 14:53:26 +00:00
test-accessors.cc Scrub 'Crankshaft|Hydrogen|Lithium' from code-base. 2018-08-23 12:20:38 +00:00
test-allocation.cc Fix [Memory] Add OnCriticalMemoryPressure overload to v8::Platform. 2017-12-26 10:55:07 +00:00
test-api-accessors.cc Scrub 'Crankshaft|Hydrogen|Lithium' from code-base. 2018-08-23 12:20:38 +00:00
test-api-interceptors.cc Scrub 'Crankshaft|Hydrogen|Lithium' from code-base. 2018-08-23 12:20:38 +00:00
test-api.cc [scanner] Don't muck with positions of EOS in Next 2018-08-29 14:08:41 +00:00
test-api.h Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-array-list.cc [explicit isolates] Remove GetIsolate from objects.cc 2018-07-13 12:42:14 +00:00
test-assembler-arm64.cc [cctests/assembler-arm64] Rework constant pool test 2018-08-27 09:08:56 +00:00
test-assembler-arm.cc [arm] Eliminate old form of core-scalar vmov instructions. 2018-07-24 17:39:24 +00:00
test-assembler-ia32.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-mips64.cc MIPS[64] Optimize trampoline and long branches. 2018-08-13 11:31:36 +00:00
test-assembler-mips.cc MIPS[64] Optimize trampoline and long branches. 2018-08-13 11:31:36 +00:00
test-assembler-ppc.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-assembler-s390.cc s390: Corrections to brxh / brxhg cctests in test-assembler-s390.cc 2018-07-30 20:40:21 +00:00
test-assembler-x64.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-atomicops.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-bignum-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-bignum.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-bit-vector.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-circular-queue.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-code-layout.cc [ubsan] Change Address typedef to uintptr_t 2018-04-14 01:25:28 +00:00
test-code-stub-assembler.cc [objects] Split js-array-buffer.h from js-array.h 2018-08-17 08:58:08 +00:00
test-code-stubs-arm64.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-arm.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-ia32.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-code-stubs-mips64.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-mips.cc [test] Remove superflous FlushICache calls. 2018-07-31 18:19:42 +00:00
test-code-stubs-x64.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-code-stubs.cc [ubsan] Fix many static_cast<int32_t> with undefined behavior 2018-04-17 02:02:18 +00:00
test-code-stubs.h [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-compiler.cc [cleanup] Remove uses of deprecated StackTrace::GetFrame 2018-07-25 06:36:25 +00:00
test-constantpool.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-conversions.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-cpu-profiler.cc [cpu-profiler] Use instruction start as the key for the CodeMap 2018-07-27 09:53:00 +00:00
test-date.cc Reland "Implement a new spec for timezone offset calculation" 2018-04-04 22:42:30 +00:00
test-debug.cc [debug] remove break_id 2018-08-13 08:48:34 +00:00
test-decls.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-deoptimization.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-dictionary.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-disasm-arm64.cc [cctest][arm64] Fix debug disassembler test with no simulator. 2018-08-16 08:38:57 +00:00
test-disasm-arm.cc [arm] Implement I64Atomic operations on Arm 2018-08-25 09:59:17 +00:00
test-disasm-ia32.cc [turbofan] Further optimize DataView accesses. 2018-08-14 09:20:47 +00:00
test-disasm-mips64.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-mips.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-ppc.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-s390.cc [turbofan] Thread through AssemblerOptions 2018-07-06 09:42:00 +00:00
test-disasm-x64.cc [x64] Add assembly/disassembly for left-over SIMD ops 2018-08-16 18:20:16 +00:00
test-diy-fp.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-double.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-elements-kind.cc Reland: [iwyu] Remove sfi-inl.h -> wasm include 2018-07-25 14:54:37 +00:00
test-experimental-extra.js Add experimental, non-snapshotted V8 extras 2015-08-20 00:01:14 +00:00
test-extra.js [turbofan] Properly optimize calls to promise extras. 2018-02-16 19:46:30 +00:00
test-fast-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-feedback-vector.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-feedback-vector.h [objects] Merge SFI outer_scope_info and feedback_metadata 2018-04-06 15:06:04 +00:00
test-field-type-tracking.cc [turbofan] Prepare broker for serialization. 2018-07-23 17:20:49 +00:00
test-fixed-dtoa.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-flags.cc [GetIsolate] Remove GetIsolate use in Map 2018-06-25 11:38:37 +00:00
test-func-name-inference.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-fuzz-arm64.cc [cleanup] Unify naming of instruction size constant 2018-08-07 12:18:13 +00:00
test-global-handles.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-global-object.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-hashcode.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-hashmap.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-heap-profiler.cc [heap-profiler] Make WeakMap => key value weak in heap snapshot. 2018-08-29 01:58:38 +00:00
test-identity-map.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-inobject-slack-tracking.cc Remove unnecessary 'size' argument from TYPED_ARRAYS macro. 2018-07-31 12:29:13 +00:00
test-inspector.cc [inspector] postpone API interrupts during creation of injected script 2018-06-05 18:04:44 +00:00
test-intl.cc [explicit isolates] Remove various GetIsolates 2018-07-17 11:56:37 +00:00
test-isolate-independent-builtins.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-javascript-arm64.cc [jumbo] arm64 cctest fixes 2017-09-30 17:17:23 +00:00
test-js-arm64-variables.cc [jumbo] arm64 cctest fixes 2017-09-30 17:17:23 +00:00
test-liveedit.cc [cleanup] Replace calls to deprecated String::Concat and ToInt32 from tests. 2018-07-24 17:30:14 +00:00
test-lockers.cc [iwyu] api.h iwyu 2018-07-20 11:49:02 +00:00
test-log-stack-tracer.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-log.cc Stop cctest/test-log/LogMaps from flaking on Windows. 2018-08-27 10:21:22 +00:00
test-macro-assembler-arm.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-macro-assembler-mips64.cc [cleanup] Unify naming of instruction size constant 2018-08-07 12:18:13 +00:00
test-macro-assembler-mips.cc [cleanup] Unify naming of instruction size constant 2018-08-07 12:18:13 +00:00
test-macro-assembler-x64.cc Reland "[turboassembler] Introduce hard-abort mode" 2018-07-24 15:58:46 +00:00
test-managed.cc Add size estimate to Managed<T> 2018-05-30 10:26:21 +00:00
test-mementos.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-modules.cc [api,modules] Allow GetModuleNamespace on unevaluated modules. 2018-01-08 09:01:25 +00:00
test-object.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-orderedhashtable.cc [GetIsolate] Remove (most) GetIsolate from src/objects-debug.cc 2018-06-21 16:34:27 +00:00
test-parsing.cc [parser] Restore trivial expression grammar shortcuts with range-based condition 2018-08-29 16:21:10 +00:00
test-platform.cc [Memory] Create memory management API in v8::internal. 2017-12-15 18:49:47 +00:00
test-profile-generator.cc [cpu-profiler] Use instruction start as the key for the CodeMap 2018-07-27 09:53:00 +00:00
test-random-number-generator.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-regexp.cc Rename ShortExternalString to UncachedExternalString. 2018-08-27 16:54:03 +00:00
test-representation.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-roots.cc Revert "Revert (partially) "Reland [in-place weak refs] Use WeakArrayList in Heap::noscript_list."" 2018-08-06 12:37:18 +00:00
test-sampler-api.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-serialize.cc [array] Move Array.p.lastIndexOf from JS to Torque 2018-08-28 12:02:32 +00:00
test-strings.cc Add v8::String::StringEquals to API 2018-07-31 11:22:57 +00:00
test-strtod.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-symbols.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-sync-primitives-arm64.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-sync-primitives-arm.cc Reland: [cleanup] Refactor the Factory 2018-04-09 19:52:22 +00:00
test-thread-termination.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-threads.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-trace-event.cc [cleanup] Fix uses of V8_DEPRECATE_SOON methods in v8 2018-07-19 10:04:07 +00:00
test-traced-value.cc Avoid octal escape sequences 2017-12-01 15:08:14 +00:00
test-transitions.cc [cleanup] Remove Isolate parameter from object print 2018-07-12 11:31:57 +00:00
test-transitions.h [explicit isolates] Eliminate GetIsolate from transitions.cc 2018-06-05 11:00:43 +00:00
test-typedarrays.cc Remove unnecessary 'size' argument from TYPED_ARRAYS macro. 2018-07-31 12:29:13 +00:00
test-types.cc [turbofan] Put some tests under a canonical handle scope. 2018-07-31 18:20:53 +00:00
test-unbound-queue.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-unboxed-doubles.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-unscopables-hidden-prototype.cc Disable soon to be deprecated APIs per default for v8 2015-12-09 10:35:04 +00:00
test-usecounters.cc [parser] Remove incorrect UseCounter code for LabeledExpressionStatement 2018-01-06 00:17:43 +00:00
test-utils-arm64.cc [arm64] Remove remaining instances of csp 2018-01-18 18:07:18 +00:00
test-utils-arm64.h [arm64] Remove remaining instances of csp 2018-01-18 18:07:18 +00:00
test-utils.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-version.cc [build] Introduce an embedder version string 2017-10-05 07:17:45 +00:00
test-weakmaps.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
test-weaksets.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
testcfg.py [test] Remove context usage from test processors 2018-02-01 10:35:02 +00:00
trace-extension.cc [ptr-compr] Support 31-bit Smis in lower half-word on 64-bit architectures. 2018-06-05 11:37:35 +00:00
trace-extension.h [iwyu] More iwyu fixes (date, execution etc.) 2018-02-26 08:59:59 +00:00
types-fuzz.h [turbofan] Prepare broker for serialization. 2018-07-23 17:20:49 +00:00
unicode-helpers.h Implement DFA Unicode Decoder 2017-12-11 21:36:13 +00:00