--
a0491c8d790972cd80e2d720fe1fdf5f711a6f1a by Greg Falcon <gfalcon@google.com>:
Stop directly accessing CordRepFlat data via CordRep::data.
The old pattern of access breaks the `CordRep` type abstraction; since `CordRep::data` is not in general guaranteed to contain the chunk's data, we shouldn't access it that way.
This incidentally adds an assertion check (via the flat() accessor) that the CordRep is indeed flat on each such access, but a manual inspection of the code, as well as the fact that this code currently works, suggest that this is always true.)
PiperOrigin-RevId: 351592344
--
f40c3b43ca5b1d7e23cd45f1ffac1783105ac1a3 by Abseil Team <absl-team@google.com>:
Revert 18abb2902b9f06c63a968b24d3dda785ebf99a22
PiperOrigin-RevId: 351523518
--
18abb2902b9f06c63a968b24d3dda785ebf99a22 by Abseil Team <absl-team@google.com>:
Internal change
PiperOrigin-RevId: 351512412
--
9b881602d45e95e06089792c7627cd56528a255a by Abseil Team <absl-team@google.com>:
Keep time's global state in a cacheline-aligned structure.
Keeping the global state as separate global variables results in two issues:
1) False sharing with adjacent global data (e.g., cycle clock source), since
the global fields are updated every O(10usec).
2) The hot global fields (e.g., seq and samples) can reside on different
cache lines.
To fix this, simply wrap the global data in a ABSL_CACHE_ALIGNED structure.
This is similar to what we do for MutexGlobals.
PiperOrigin-RevId: 351389466
GitOrigin-RevId: a0491c8d790972cd80e2d720fe1fdf5f711a6f1a
Change-Id: Ie0fa80112043381cd37c84e2ab2b7334839f54b5