v8/test/unittests/compiler
Leszek Swirski 2871e05cc3 Reland "[codegen] Add static interface descriptors"
This is a reland of ae0752df1b

Reland fixes:

  * Remove UNREACHABLE() from constexpr switch, since we don't have a
    CONSTEXPR_UNREACHABLE() (it's ok, the switch is exhaustive for the
    enum anyway).
  * Fix IsRegisterArray trait to use public inheritance and size_t for
    std::array size.

Original change's description:
> [codegen] Add static interface descriptors
>
> Add a new CRTP StaticCallInterfaceDescriptor class, which provides
> static constexpr getters for a descriptor's registers, parameter counts,
> and so on. Each CallInterfaceDescriptor subclass is changed to extend
> StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself
> extending CallInterfaceDescriptor to still provide a dynamic lookup
> where needed.
>
> StaticCallInterfaceDescriptor provides a couple of customisation points,
> where it reads its CRTP derived descriptor's static fields and
> functions, with default fallbacks where appropriate. With these
> customisation points, the definition of CallInterfaceDescriptor
> subclasses is simplified to:
>
>     a) Providing parameter names (as before)
>     b) Providing parameter types (as before)
>     c) Optionally setting flags (like kNoContext or kAllowVarArgs) as
>        static booleans on the class.
>     d) Optionally providing a `registers()` method that returns a
>        std::array<Register, N> of registers that may be used for
>        parameters (if not provided, this defaults to the implementation
>        specific default register set).
>
> Parameter registers (and register count) are automagically set based on
> the number of parameters and number of given registers, with extra magic
> to ignore no_reg registers (to reduce ia32 special casing). The
> CallInterfaceDescriptorData is initialized based on these static
> functions, rather than manual per-descriptor initializers.
>
> This allows us to skip loading descriptors dynamically for CallBuiltin
> in Sparkplug, and instead lets us use a bit of template magic to
> statically set up arguments for the calls. Any other users of statically
> known descriptors will also benefit, thanks to C++ picking the static
> methods over the dynamic methods on the base class when available.
>
> Because we can remove various virtual functions and trigger heavier
> inlining of constantly known values, binary size slightly decreases with
> this change.
>
> Note that torque-generated descriptors are changed to use the same magic,
> rather than having Torque-specific magic, for consistency.
>
> Bug: v8:11420
> Change-Id: Icc5e238b6313a08734feb564204a13226b450c22
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518
> Auto-Submit: Leszek Swirski <leszeks@chromium.org>
> Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
> Reviewed-by: Clemens Backes <clemensb@chromium.org>
> Reviewed-by: Igor Sheludko <ishell@chromium.org>
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Commit-Queue: Clemens Backes <clemensb@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#73996}

TBR=nicohartmann@chromium.org,clemensb@chromium.org,ishell@chromium.org,clemensb@chromium.org

Bug: v8:11420
Change-Id: Icd1f6cdb3c178e74460044b1e9623139929ceba8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831872
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Clemens Backes <clemensb@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#74010}
2021-04-16 15:43:05 +00:00
..
arm Revert "Move branch inversion on ==0 into platform-agnostic reducer" 2020-03-25 16:47:48 +00:00
arm64 [compiler][arm64] fabs(fsub(x, y)) to fabd(x, y) 2021-04-01 09:57:33 +00:00
backend [wasm][x64] Use the cmov instruction for WebAssembly's Select 2021-04-13 10:37:08 +00:00
ia32 [wasm-simd][x64][ia32] Optimize swizzle with constant indices 2021-03-22 20:33:45 +00:00
mips Move architecture dependent files 2019-05-28 14:02:15 +00:00
mips64 Move architecture dependent files 2019-05-28 14:02:15 +00:00
ppc Adding myself to relevant OWNERS files. 2020-11-02 16:37:28 +00:00
regalloc [Turboprop] Ensure constant operands are only used when allowed. 2021-02-12 20:40:36 +00:00
riscv64 [riscv64] Implementation of RiscvCmpZero ARCH OPCODE 2021-04-14 12:54:34 +00:00
s390 Move architecture dependent files 2019-05-28 14:02:15 +00:00
x64 [wasm][x64] Use the cmov instruction for WebAssembly's Select 2021-04-13 10:37:08 +00:00
branch-elimination-unittest.cc [compiler] Fix --trace-turbo-reduction in the presence of direct reads 2020-09-11 17:21:43 +00:00
bytecode-analysis-unittest.cc [cleanup] Replace redundant BytecodeArrayIterator class 2021-02-24 13:54:53 +00:00
checkpoint-elimination-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
common-operator-reducer-unittest.cc [compiler] Remove persistent handles as a broker parameter 2020-08-13 08:13:33 +00:00
common-operator-unittest.cc [compiler] Fix typo in IfValueParameters operator== 2021-01-11 11:15:14 +00:00
compiler-test-utils.h [turbofan] Drop V8_TURBOFAN_BACKEND and V8_TURBOFAN_TARGET defines. 2015-08-10 07:17:34 +00:00
constant-folding-reducer-unittest.cc [compiler] Fix --trace-turbo-reduction in the presence of direct reads 2020-09-11 17:21:43 +00:00
control-equivalence-unittest.cc Move utility code to src/utils 2019-05-23 14:13:34 +00:00
control-flow-optimizer-unittest.cc [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
csa-load-elimination-unittest.cc [turbofan] Fix CsaLoadElimination for small types 2021-03-11 11:09:06 +00:00
dead-code-elimination-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
decompression-optimizer-unittest.cc [compiler] Rename type BailoutId to BytecodeOffset 2021-01-20 13:03:41 +00:00
diamond-unittest.cc [cleanup] [compiler] Fix (D)CHECK macros 2017-09-25 10:21:34 +00:00
effect-control-linearizer-unittest.cc Reland "[turboprop] Add a slot for optimization marker in feedback vector" 2020-10-28 11:09:14 +00:00
frame-unittest.cc Reland "Reland "Reland "[compiler][wasm] Align Frame slots to value size""" 2021-03-05 19:49:19 +00:00
graph-reducer-unittest.cc [compiler] Fix --trace-turbo-reduction in the presence of direct reads 2020-09-11 17:21:43 +00:00
graph-reducer-unittest.h [unittests] Convert to the new MOCK_METHOD macro. 2020-06-10 15:50:38 +00:00
graph-trimmer-unittest.cc [turbofan] Proper dead code elimination as regular reducer. 2015-06-19 12:07:26 +00:00
graph-unittest.cc [frames] Add UnoptimizedFrame 2021-02-15 14:35:04 +00:00
graph-unittest.h [turbofan] introduce a deterministic tick measurement and assert optimization doesn't take too long 2019-07-17 07:00:00 +00:00
int64-lowering-unittest.cc Reland "[codegen] Add static interface descriptors" 2021-04-16 15:43:05 +00:00
js-call-reducer-unittest.cc [compiler] Fix --trace-turbo-reduction in the presence of direct reads 2020-09-11 17:21:43 +00:00
js-create-lowering-unittest.cc [frames] Add UnoptimizedFrame 2021-02-15 14:35:04 +00:00
js-intrinsic-lowering-unittest.cc [compiler] Fix --trace-turbo-reduction in the presence of direct reads 2020-09-11 17:21:43 +00:00
js-native-context-specialization-unittest.cc Move number related files to src/numbers 2019-05-15 19:34:44 +00:00
js-operator-unittest.cc [tests] Fix subobject-linkage error when building with GCC 2019-10-07 11:11:39 +00:00
js-typed-lowering-unittest.cc [compiler] Fix --trace-turbo-reduction in the presence of direct reads 2020-09-11 17:21:43 +00:00
linkage-tail-call-unittest.cc Reland "[codegen][frames] Generalize argument padding slot code" 2021-03-05 22:35:30 +00:00
load-elimination-unittest.cc Retire PretenureFlag and use AllocationType everywhere. 2019-03-12 08:10:44 +00:00
loop-peeling-unittest.cc [turbofan] Add MachineRepresentation argument to LoopExitValue 2020-12-16 16:27:50 +00:00
machine-operator-reducer-unittest.cc [compiler] Silence NaNs in Float64Mod and Float64Atan2 2021-01-25 07:45:30 +00:00
machine-operator-unittest.cc [wasm][x64] Use the cmov instruction for WebAssembly's Select 2021-04-13 10:37:08 +00:00
node-cache-unittest.cc [turbofan] use ZoneUnorderedMap for NodeCache 2020-03-05 13:00:34 +00:00
node-matchers-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
node-properties-unittest.cc [zone-compr] Add kCompressGraphZone constant 2020-07-24 08:50:11 +00:00
node-test-utils.cc [turbofan] Introduce LoadImmutable, use it in wasm compiler 2021-03-23 08:16:09 +00:00
node-test-utils.h [turbofan] Introduce LoadImmutable, use it in wasm compiler 2021-03-23 08:16:09 +00:00
node-unittest.cc [zone-compr] Add kCompressGraphZone constant 2020-07-24 08:50:11 +00:00
opcodes-unittest.cc [compiler] Refactor opcode macro lists 2020-06-23 07:54:14 +00:00
persistent-unittest.cc [ubsan] Fix numerical overflows in the compiler 2019-01-10 11:17:37 +00:00
redundancy-elimination-unittest.cc Remove obsolete {Binary,Number}OperationHint::kSigned32 2020-11-24 11:12:10 +00:00
schedule-unittest.cc Reland "[zone-compr] Introduce ZoneTypeTraits and ZoneCompression" 2020-07-31 11:43:08 +00:00
scheduler-rpo-unittest.cc [cleanup] Refactor compiler to use default members. 2018-09-17 12:12:21 +00:00
scheduler-unittest.cc [zone-compr] Add kCompressGraphZone constant 2020-07-24 08:50:11 +00:00
simplified-lowering-unittest.cc Reland "[turboprop] Pass required parameters as value inputs to TierUpCheck node" 2020-10-28 18:18:36 +00:00
simplified-operator-reducer-unittest.cc [turbofan] Reduce consecutive overflow addition with constants 2020-09-22 16:17:53 +00:00
simplified-operator-unittest.cc [ptr-compr] Remove Compressed mentions from in the pipeline 2019-11-11 12:23:41 +00:00
state-values-utils-unittest.cc [compiler] Optimize AddInputsToFrameStateDescriptor 2020-03-05 11:45:15 +00:00
typed-optimization-unittest.cc [compiler] Fix --trace-turbo-reduction in the presence of direct reads 2020-09-11 17:21:43 +00:00
typer-unittest.cc [compiler] Remove persistent handles as a broker parameter 2020-08-13 08:13:33 +00:00
value-numbering-reducer-unittest.cc Reland "[zone-compr] Introduce ZoneTypeTraits and ZoneCompression" 2020-07-31 11:43:08 +00:00
zone-stats-unittest.cc [zone] Cleanup zone allocations in src/compiler and tests, pt.3 2020-07-10 16:39:05 +00:00