v8/test
Nico Hartmann 120d433345 Reland "[turbofan] Improve equality on NumberOrOddball"
This is a reland of 6204768bab

The original issue exposed the problem that NumberEqual performs
implicit conversion of oddballs to numbers, which is incorrect for
abstract equality comparison (i.e. 0 == null must not be true).

This reland fixes this by applying the following steps:
* Introduced a new kNumberOrBoolean value for CompareOperationFeedback,
  CompareOperationHint, TypeCheckKind and CheckedTaggedInputMode.
* In CodeStubAssembler::Equal: Further distinguish between boolean and
  non-boolean oddballs and set feedback accoringly.
* In JSTypedLowering: Construct [Speculative]NumberEqual operator with
  CompareOperationHint::kNumberOrBoolean, when this feedback is present.
  JSOperatorBuilder and operator cache are extended accordingly.
* In SimplifiedLowering: Propagate a UseInfo with new
  TypeCheckKind::kNumberOrBoolean.
* This leads to the generation of CheckedTaggedToFloat64 in
  RepresentationChanger with new CheckedTaggedInputMode::kNumberOrBoolean.
* In EffectControlLinearizer: Handle this new mode. Accept and convert
  number and boolean and deopt for rest.

Original change's description:
> [turbofan] Improve equality on NumberOrOddball
>
> This CL cleans up CompareOperationFeedback by replacing it with a
> composable set of flags. The interpreter is changed to collect
> more specific feedback for abstract equality, especially if oddballs
> are involved.
>
> TurboFan is changed to construct SpeculativeNumberEqual operator
> instead of the generic JSEqual in many more cases. This change has
> shown a local speedup of a factor of 3-10, because the specific
> operator is way faster than calling into the generic builtin, but
> it also enables additional optimizations, further improving
> runtime performance.
>
> Bug: v8:5660
> Change-Id: I856752caa707e9a4f742c6e7a9c75552fb431d28
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2162854
> Reviewed-by: Mythri Alle <mythria@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#67645}

TBR: tebbi@chromium.org
Bug: v8:5660
Change-Id: I12e733149a1d2773cafb781a1d4b10aa1eb242a7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2193713
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Mythri Alle <mythria@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68037}
2020-05-28 11:33:46 +00:00
..
benchmarks [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
cctest Reland "[turbofan] Improve equality on NumberOrOddball" 2020-05-28 11:33:46 +00:00
common [wasm-gc] Add packed types to ValueType 2020-05-27 05:19:58 +00:00
debugger [debugger] Mark Math.random as having side effects 2020-05-20 14:41:02 +00:00
debugging [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
fuzzer [wasm-simd][fuzzer] Add unsigned rounding average 2020-05-27 16:58:15 +00:00
inspector [inspector] Report length and endColumn correctly for Wasm. 2020-05-27 08:05:08 +00:00
intl [Intl] Fix hour cycle in formatRange 2020-05-12 20:38:45 +00:00
js-perf-test [js-perf-test] Benchmark for sloppy equality 2020-05-04 08:29:00 +00:00
memory
message [wasm] Implement tracing of function calls 2020-05-27 08:24:38 +00:00
mjsunit Reland "[turbofan] Improve equality on NumberOrOddball" 2020-05-28 11:33:46 +00:00
mkgrokdump [heap] Split out paged-spaces.h 2020-05-14 19:25:25 +00:00
mozilla [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
test262 [Promise.any] Make AggregateError.errors a data property 2020-05-28 08:36:02 +00:00
torque [torque] Generate better code when using & operator on bitfields 2020-05-22 21:59:06 +00:00
unittests [test] Skip hanging death test on Win asan 2020-05-27 11:09:22 +00:00
wasm-api-tests [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
wasm-js [wasm] Update wasm spec tests 2020-05-25 07:59:57 +00:00
wasm-spec-tests [wasm] Update wasm spec tests 2020-05-25 07:59:57 +00:00
webkit [snapshot] Clear reconstructable data prior to d8 stress_snapshot run 2020-05-06 07:11:22 +00:00
BUILD.gn [preparser] deprecate stand-alone "preparser" test-suite 2019-11-20 08:52:59 +00:00
OWNERS