v8/test
Benedikt Meurer 06ee127b75 [es2015] Refactor the JSArrayIterator.
This changes the JSArrayIterator to always have only a single instance
type, instead of the zoo of instance types that we had before, and
which became less useful with the specification update to when "next"
is loaded from the iterator now. This greatly simplifies the baseline
implementation of the array iterator, which now only looks at the
iterated object during %ArrayIteratorPrototype%.next invocations.

In TurboFan we introduce a new JSCreateArrayIterator operator, that
holds the IterationKind and get's the iterated object as input. When
optimizing %ArrayIteratorPrototype%.next in the JSCallReducer, we
check whether the receiver is a JSCreateArrayIterator, and if so,
we try to infer maps for the iterated object from there. If we find
any, we speculatively assume that these won't have changed during
iteration (as we did before with the previous approach), and generate
fast code for both JSArray and JSTypedArray iteration.

Drive-by-fix: Drop the fast_array_iteration protector, it's not
necessary anymore since we have the deoptimization guard bit in
the JSCallReducer now.

This addresses the performance cliff noticed in webpack 4. The minimal
repro on the tracking bug goes from

  console.timeEnd: mono, 124.773000
  console.timeEnd: poly, 670.353000

to

  console.timeEnd: mono, 118.709000
  console.timeEnd: poly, 141.393000

so that's a 4.7x improvement.

Also make presubmit happy by adding the missing #undef's.

Bug: v8:7510, v7:7514
Change-Id: I79a46bfa2cd0f0710e09365ef72519b1bbb667b5
Reviewed-on: https://chromium-review.googlesource.com/946098
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51725}
2018-03-05 11:57:28 +00:00
..
benchmarks [test] Forgive tests timing out on num-fuzzers 2018-02-08 23:08:05 +00:00
cctest [Liftoff] Implement f32.sqrt and f64.sqrt 2018-03-05 11:39:48 +00:00
common [wasm] Add remaining saturating conversions 2018-02-07 19:45:39 +00:00
debugger [debug] remove ScriptBreakPointType from debug test api wrapper. 2018-02-26 11:34:40 +00:00
fuzzer [cleanup] Deprecate EnsureEventLoopInitialized 2018-02-28 15:32:28 +00:00
inspector [inspector] expose throwOnSideEffect for Runtime.evaluate 2018-02-28 23:54:46 +00:00
intl [test] Remove context usage from test processors 2018-02-01 10:35:02 +00:00
js-perf-test [js-perf-test] Add regression benchmark 2018-03-01 13:52:44 +00:00
memory [snapshot] add tracking for builtin snapshot size. 2017-08-31 07:29:31 +00:00
message [esnext] Remove always-disabled support for function.sent 2018-02-26 20:01:41 +00:00
mjsunit [es2015] Refactor the JSArrayIterator. 2018-03-05 11:57:28 +00:00
mkgrokdump [API] Remove ArrayBuffer::Allocator virtual memory methods. 2018-03-03 12:00:24 +00:00
mozilla [test] Remove context usage from test processors 2018-02-01 10:35:02 +00:00
preparser [test] Remove dead code from suites and tests 2018-02-01 14:12:49 +00:00
test262 [DataView] Throw TypeError when buffer is detached 2018-03-03 01:50:22 +00:00
unittests [cleanup] Remove OpParameter(Node*) helper 2018-03-05 10:05:05 +00:00
wasm-spec-tests [wasm] Update spec tests 2018-02-28 13:22:37 +00:00
webkit Revert "[builtins] Mega-revert to address the Dev blocker in crbug.com/808911." 2018-02-08 17:25:13 +00:00
bot_default.isolate [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
BUILD.gn [test] Add a d8_default test suite collection 2018-01-12 15:18:04 +00:00
d8_default.isolate [test] Add a d8_default test suite collection 2018-01-12 15:18:04 +00:00
default.isolate [wasm] Add wasm spec tests to the v8 test runner 2017-04-27 13:00:13 +00:00
optimize_for_size.isolate [debugger] basic test infrastructure for new debugger test api. 2016-10-21 06:38:05 +00:00
perf.isolate Reland "Reland "[test] Creating command before execution phase."" 2017-12-04 13:40:29 +00:00