v8_unittests pays process creation, ~6,900 static GTest registrations,
ICU, snapshot and flag parsing for every single test, because the
testrunner spawns a fresh process per test.
Add a --fork-server mode on POSIX (excluding TSan, Fuchsia, iOS) that
performs this initialization once and then forks a child per
--gtest_filter request read from stdin. Each test still runs in its own
OS process. The testrunner keeps one server per worker and variant,
falls back to direct execution on any failure, and skips the server for
Clang coverage, num_fuzzer, per-subtest seeds and --command-prefix.
Opt out with --no-fork-server or V8_NO_FORK_SERVER=1.
Full-suite wall-clock time in x64.release drops from 12.1s to 5.8s.
TAG=agy
CONV=27a1690b-7f9b-495b-8ad4-dd989d7f50bd
Change-Id: I22a7985cde2713c146360030e6f4d16425ebb8bc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8461671
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/main@{#110460}