Export of internal Abseil changes

--
d8ddeda8e52132b908fae89b25f117a055d78c04 by Abseil Team <absl-team@google.com>:

Improve performance of ByteStringFromAscii by changing kHexValue to have -1 in invalid value slots. This way a single load can do both the validation and conversion.

PiperOrigin-RevId: 284167344

--
5037e97e2eaaac8ced9a5290949deda4b43b9ceb by Mark Barolak <mbar@google.com>:

Change the underlying symbol name of Cord to absl::Cord.

PiperOrigin-RevId: 284005429

--
4ef66c72aedf135f2b4fd0ba7a73de6642decfff by Abseil Team <absl-team@google.com>:

Eliminate an unnecessary load when futex is contended in Waiter::Wait()

The first argument to compare_exchange_weak() is a reference and will be
updated upon failure.  There is no need to do an additional load on the
same variable.

PiperOrigin-RevId: 284002752
GitOrigin-RevId: d8ddeda8e52132b908fae89b25f117a055d78c04
Change-Id: Idac68a1901eb8c30050adc3860765b1a6fa085c7
This commit is contained in:
Abseil Team 2019-12-06 05:36:40 -08:00 committed by Mark Barolak
parent d659fe54b3
commit 77f87009a3
5 changed files with 14 additions and 12 deletions

View file

@ -136,7 +136,7 @@ bool Waiter::Wait(KernelTimeout t) {
bool first_pass = true;
while (true) {
int32_t x = futex_.load(std::memory_order_relaxed);
if (x != 0) {
while (x != 0) {
if (!futex_.compare_exchange_weak(x, x - 1,
std::memory_order_acquire,
std::memory_order_relaxed)) {
@ -313,7 +313,7 @@ bool Waiter::Wait(KernelTimeout t) {
bool first_pass = true;
while (true) {
int x = wakeups_.load(std::memory_order_relaxed);
if (x != 0) {
while (x != 0) {
if (!wakeups_.compare_exchange_weak(x, x - 1,
std::memory_order_acquire,
std::memory_order_relaxed)) {