Export of internal Abseil changes
-- c99f979ad34f155fbeeea69b88bdc7458d89a21c by Derek Mauro <dmauro@google.com>: Remove a floating point division by zero test. This isn't testing behavior related to the library, and MSVC warns about it in opt mode. PiperOrigin-RevId: 285220804 -- 68b015491f0dbf1ab547994673281abd1f34cd4b by Gennadiy Rozental <rogeeff@google.com>: This CL introduces following changes to the class FlagImpl: * We eliminate the CommandLineFlagLocks struct. Instead callback guard and callback function are combined into a single CallbackData struct, while primary data lock is stored separately. * CallbackData member of class FlagImpl is initially set to be nullptr and is only allocated and initialized when a flag's callback is being set. For most flags we do not pay for the extra space and extra absl::Mutex now. * Primary data guard is stored in data_guard_ data member. This is a properly aligned character buffer of necessary size. During initialization of the flag we construct absl::Mutex in this space using placement new call. * We now avoid extra value copy after successful attempt to parse value out of string. Instead we swap flag's current value with tentative value we just produced. PiperOrigin-RevId: 285132636 -- ed45d118fb818969eb13094cf7827c885dfc562c by Tom Manshreck <shreck@google.com>: Change null-term* (and nul-term*) to NUL-term* in comments PiperOrigin-RevId: 285036610 -- 729619017944db895ce8d6d29c1995aa2e5628a5 by Derek Mauro <dmauro@google.com>: Use the Posix implementation of thread identity on MinGW. Some versions of MinGW suffer from thread_local bugs. PiperOrigin-RevId: 285022920 -- 39a25493503c76885bc3254c28f66a251c5b5bb0 by Greg Falcon <gfalcon@google.com>: Implementation detail change. Add further ABSL_NAMESPACE_BEGIN and _END annotation macros to files in Abseil. PiperOrigin-RevId: 285012012 GitOrigin-RevId: c99f979ad34f155fbeeea69b88bdc7458d89a21c Change-Id: I4c85d3704e45d11a9ac50d562f39640a6adbedc1
This commit is contained in:
parent
1e39f8626a
commit
12bc53e031
339 changed files with 948 additions and 82 deletions
|
|
@ -43,6 +43,7 @@ cc_library(
|
|||
deps = [
|
||||
"//absl/base",
|
||||
"//absl/base:base_internal",
|
||||
"//absl/base:config",
|
||||
"//absl/base:core_headers",
|
||||
"//absl/base:malloc_internal",
|
||||
"//absl/base:raw_logging_internal",
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ absl_cc_library(
|
|||
DEPS
|
||||
absl::base
|
||||
absl::base_internal
|
||||
absl::config
|
||||
absl::core_headers
|
||||
absl::malloc_internal
|
||||
absl::raw_logging_internal
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
#include "absl/synchronization/mutex.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// Return whether int *arg is zero.
|
||||
static bool IsZero(void *arg) {
|
||||
|
|
@ -47,4 +48,5 @@ bool Barrier::Block() {
|
|||
return this->num_to_exit_ == 0;
|
||||
}
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
#include "absl/synchronization/mutex.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// Barrier
|
||||
//
|
||||
|
|
@ -73,5 +74,6 @@ class Barrier {
|
|||
int num_to_exit_ ABSL_GUARDED_BY(lock_);
|
||||
};
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
#endif // ABSL_SYNCHRONIZATION_BARRIER_H_
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include "absl/base/internal/raw_logging.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// Return whether int *arg is zero.
|
||||
static bool IsZero(void *arg) {
|
||||
|
|
@ -52,4 +53,5 @@ void BlockingCounter::Wait() {
|
|||
// after we return from this method.
|
||||
}
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include "absl/synchronization/mutex.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// BlockingCounter
|
||||
//
|
||||
|
|
@ -92,6 +93,7 @@ class BlockingCounter {
|
|||
int num_waiting_ ABSL_GUARDED_BY(lock_);
|
||||
};
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_SYNCHRONIZATION_BLOCKING_COUNTER_H_
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include "absl/time/time.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace {
|
||||
|
||||
void PauseAndDecreaseCounter(BlockingCounter* counter, int* done) {
|
||||
|
|
@ -63,4 +64,5 @@ TEST(BlockingCounterTest, BasicFunctionality) {
|
|||
}
|
||||
|
||||
} // namespace
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include "absl/synchronization/internal/per_thread_sem.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
// ThreadIdentity storage is persistent, we maintain a free-list of previously
|
||||
|
|
@ -133,6 +134,7 @@ base_internal::ThreadIdentity* CreateThreadIdentity() {
|
|||
}
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_LOW_LEVEL_ALLOC_MISSING
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "absl/base/port.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
// Allocates and attaches a ThreadIdentity object for the calling thread.
|
||||
|
|
@ -53,6 +54,7 @@ inline base_internal::ThreadIdentity* GetOrCreateCurrentThreadIdentity() {
|
|||
}
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_SYNCHRONIZATION_INTERNAL_CREATE_THREAD_IDENTITY_H_
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@
|
|||
// Do not use STL. This module does not use standard memory allocation.
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
namespace {
|
||||
|
|
@ -690,6 +691,7 @@ int GraphCycles::GetStackTrace(GraphId id, void*** ptr) {
|
|||
}
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_LOW_LEVEL_ALLOC_MISSING
|
||||
|
|
|
|||
|
|
@ -40,7 +40,10 @@
|
|||
|
||||
#include <cstdint>
|
||||
|
||||
#include "absl/base/config.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
// Opaque identifier for a graph node.
|
||||
|
|
@ -132,6 +135,7 @@ class GraphCycles {
|
|||
};
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
#include "absl/base/macros.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
// We emulate a GraphCycles object with a node vector and an edge vector.
|
||||
|
|
@ -459,4 +460,5 @@ TEST_F(GraphCyclesTest, ManyEdges) {
|
|||
}
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#include "absl/time/time.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
class Futex;
|
||||
|
|
@ -148,6 +149,7 @@ class KernelTimeout {
|
|||
};
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_SYNCHRONIZATION_INTERNAL_KERNEL_TIMEOUT_H_
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "absl/time/time.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
namespace {
|
||||
|
|
@ -315,4 +316,5 @@ bool Condition::Eval() const {
|
|||
|
||||
void RegisterSymbolizer(bool (*)(const void*, char*, int)) {}
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#endif
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
class Condition;
|
||||
|
||||
namespace synchronization_internal {
|
||||
|
|
@ -256,4 +257,5 @@ class SynchronizationStorage {
|
|||
};
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
#include "absl/synchronization/internal/waiter.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
void PerThreadSem::SetThreadBlockedCounter(std::atomic<int> *counter) {
|
||||
|
|
@ -62,6 +63,7 @@ void PerThreadSem::Tick(base_internal::ThreadIdentity *identity) {
|
|||
}
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
#include "absl/synchronization/internal/kernel_timeout.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
class Mutex;
|
||||
|
||||
|
|
@ -85,6 +86,7 @@ class PerThreadSem {
|
|||
};
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
// In some build configurations we pass --detect-odr-violations to the
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
// primitives which might use PerThreadSem, most notably absl::Mutex.
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
class SimpleSemaphore {
|
||||
|
|
@ -175,4 +176,5 @@ TEST_F(PerThreadSemTest, Timeouts) {
|
|||
} // namespace
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#include "absl/synchronization/mutex.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
// A simple ThreadPool implementation for tests.
|
||||
|
|
@ -86,6 +87,7 @@ class ThreadPool {
|
|||
};
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_SYNCHRONIZATION_INTERNAL_THREAD_POOL_H_
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@
|
|||
#include "absl/synchronization/internal/kernel_timeout.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
static void MaybeBecomeIdle() {
|
||||
|
|
@ -481,4 +482,5 @@ void Waiter::InternalCondVarPoke() {
|
|||
#endif
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@
|
|||
#endif
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
// Waiter is an OS-specific semaphore.
|
||||
|
|
@ -157,6 +158,7 @@ class Waiter {
|
|||
};
|
||||
|
||||
} // namespace synchronization_internal
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_SYNCHRONIZATION_INTERNAL_WAITER_H_
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ ABSL_ATTRIBUTE_WEAK void AbslInternalMutexYield() { std::this_thread::yield(); }
|
|||
} // extern "C"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
namespace {
|
||||
|
||||
|
|
@ -295,7 +296,7 @@ static struct SynchEvent { // this is a trivial hash table for the events
|
|||
bool log; // logging turned on
|
||||
|
||||
// Constant after initialization
|
||||
char name[1]; // actually longer---null-terminated std::string
|
||||
char name[1]; // actually longer---NUL-terminated std::string
|
||||
} * synch_event[kNSynchEvent] ABSL_GUARDED_BY(synch_event_mu);
|
||||
|
||||
// Ensure that the object at "addr" has a SynchEvent struct associated with it,
|
||||
|
|
@ -2720,4 +2721,5 @@ bool Condition::GuaranteedEqual(const Condition *a, const Condition *b) {
|
|||
a->arg_ == b->arg_ && a->method_ == b->method_;
|
||||
}
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@
|
|||
#endif
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
class Condition;
|
||||
struct SynchWaitParams;
|
||||
|
|
@ -1000,7 +1001,7 @@ void RegisterCondVarTracer(void (*fn)(const char *msg, const void *cv));
|
|||
//
|
||||
// 'pc' is the program counter being symbolized, 'out' is the buffer to write
|
||||
// into, and 'out_size' is the size of the buffer. This function can return
|
||||
// false if symbolizing failed, or true if a null-terminated symbol was written
|
||||
// false if symbolizing failed, or true if a NUL-terminated symbol was written
|
||||
// to 'out.'
|
||||
//
|
||||
// This has the same memory ordering concerns as RegisterMutexProfiler() above.
|
||||
|
|
@ -1039,6 +1040,7 @@ enum class OnDeadlockCycle {
|
|||
// the manner chosen here.
|
||||
void SetMutexDeadlockDetectionMode(OnDeadlockCycle mode);
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
// In some build configurations we pass --detect-odr-violations to the
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include "absl/time/time.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
void Notification::Notify() {
|
||||
MutexLock l(&this->mutex_);
|
||||
|
|
@ -73,4 +74,5 @@ bool Notification::WaitForNotificationWithDeadline(absl::Time deadline) const {
|
|||
return notified;
|
||||
}
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@
|
|||
#include "absl/time/time.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Notification
|
||||
|
|
@ -116,6 +117,7 @@ class Notification {
|
|||
std::atomic<bool> notified_yet_; // written under mutex_
|
||||
};
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#endif // ABSL_SYNCHRONIZATION_NOTIFICATION_H_
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include "absl/synchronization/mutex.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
// A thread-safe class that holds a counter.
|
||||
class ThreadSafeCounter {
|
||||
|
|
@ -128,4 +129,5 @@ TEST(NotificationTest, SanityTest) {
|
|||
BasicTests(true, &local_notification2);
|
||||
}
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue