ResultKeyMemo declared std::atomic<std::shared_ptr<...>>. libc++ has no
atomic<shared_ptr> specialization, so with Apple clang the recompiler
headers stop at std::atomic's trivially-copyable static assertion
(request_serializer_tests in the macOS relinker build). The memo now uses
AtomicSharedPtr from libc, which is that specialization where the library
provides it and a locked shared_ptr with the same load and store otherwise.
The header joins the shader disk cache key's sources, and
request_serializer_tests gets core/libs on its include path.
The test configures a CMake fixture several times and ran as one CTest
case: 78 s on a Windows 11 machine, and the Windows CI job warns that it
took 66.9 s against the 30 s limit in CONTRIBUTING.md. Its slowest method
alone took 27 s because it edited six sources in turn.
Split that method into one test per source and register the file as seven
CTest shards (--shard INDEX/COUNT, as the conventions_function_bodies
tests do). The first shard keeps the shader_cache_runtime_sources name. A
self-test checks that every shard count runs each case exactly once.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
shader_cache_runtime_sources configures a CMake fixture several times with a
15 s limit per configure and 180 s for the whole test. On a loaded machine a
configure takes longer than that: under a parallel build (load average ~12 on
WSL2 Ubuntu) the test timed out in 2 of 2 runs, and on an idle Windows machine
it needs about 115 s of the 180 s. Raise the limits to 120 s per configure,
60 s per version query and 600 s for the test.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>