v8/test/unittests
Leszek Swirski 5dea60d60b Revert "[codegen] Add static interface descriptors"
This reverts commit ae0752df1b.

Reason for revert: Predictably, constexpr issues on non-clang compilers.

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}

Bug: v8:11420
Change-Id: Ie5469c9253fc140590ac30b72db6eb1d93f86806
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831485
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#74000}
2021-04-16 13:49:15 +00:00
..
api Reland "[no-wasm] Exclude src/wasm from compilation" 2021-03-11 14:29:26 +00:00
asmjs [Respect] Prefer inclusive terms 2020-06-22 18:11:23 +00:00
assembler Add RISC-V backend 2021-02-09 17:06:36 +00:00
base [logging] Fix printing of single-byte enums 2021-03-12 15:43:12 +00:00
codegen Revert "[codegen] Add static interface descriptors" 2021-04-16 13:49:15 +00:00
compiler Revert "[codegen] Add static interface descriptors" 2021-04-16 13:49:15 +00:00
compiler-dispatcher [cleanup] Pass Isolate to Compiler::Compile* 2021-02-16 11:34:17 +00:00
date Reland "[d8] Remove maximum workers limitation" 2019-07-30 07:56:17 +00:00
diagnostics Move unittest files 2019-05-27 08:52:23 +00:00
execution [weakrefs] Remove --no-harmony-weak-refs flag 2021-04-08 23:10:53 +00:00
heap cppgc: 2nd batch of unittests from heap_test.cc 2021-04-15 16:22:32 +00:00
interpreter [cleanup][csa] Remove unused using compiler::Node* occurences 2021-03-03 13:58:42 +00:00
libplatform [Jobs API]: Cleanup migration of missing Jobs pieces. 2020-09-02 20:51:29 +00:00
logging [logging] Add runtime-call-stats compile-time flag 2021-04-12 15:53:03 +00:00
numbers Reland "[no-wasm] Exclude src/wasm from compilation" 2021-03-11 14:29:26 +00:00
objects [cleanup] Remove redundant macro list 2021-03-12 19:24:57 +00:00
parser [cleanup] Remove DISALLOW_COPY_AND_ASSIGN in test/{common,unittests} 2020-11-06 06:07:54 +00:00
profiler [cpu-profiler] Implement basic refcounting of CodeEntry strings 2020-12-22 02:39:09 +00:00
regress [runtime] Use release/acquire for JSGlobalObject's global dictionary 2020-11-13 16:12:39 +00:00
strings Fix some issues caught by _LIBCPP_DEBUG=0 2019-11-21 12:17:03 +00:00
tasks [test] Skip parallel compile tasks tests under off-thread 2020-11-16 15:50:20 +00:00
torque [torque] Add LazyNode support 2021-02-23 16:51:53 +00:00
utils [wasm] Add templatized methods for static bounds checks 2020-06-24 03:41:28 +00:00
wasm [wasm] Update br_table with the latest spec changes 2021-04-15 16:55:45 +00:00
zone [zone] Final cleanup of zone allocations 2020-07-16 17:47:46 +00:00
BUILD.gn cppgc: Migrate workload tests 2021-04-14 16:35:35 +00:00
DEPS Move unit tests to test/unittests. 2014-10-01 08:34:25 +00:00
run-all-unittests.cc cppgc: Avoid initializing cppgc platform through V8 2021-02-09 08:26:11 +00:00
test-helpers.cc [compile] Add an UnoptimizedCompileState class 2020-04-23 07:08:28 +00:00
test-helpers.h [cleanup] Remove DISALLOW_COPY_AND_ASSIGN in test/{common,unittests} 2020-11-06 06:07:54 +00:00
test-utils.cc [ptr-cmpr] Remove runtime Isolate allocation flag 2020-10-01 15:34:13 +00:00
test-utils.h [config] Add V8_NODISCARD for Scope classes 2020-11-26 11:08:45 +00:00
testcfg.py [unittests] initialize the loop variable 2020-06-05 12:24:10 +00:00
unittests.status [unittests] Update PlatformUsesGuardPages test status 2021-04-08 10:14:27 +00:00