mirror of
https://github.com/abseil/abseil-cpp.git
synced 2026-06-04 12:07:05 +08:00
Remove ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
which is longer needed with the C++17 floor PiperOrigin-RevId: 729365281 Change-Id: Ife5e778ead193bb37150b9799099e92f53252cb4
This commit is contained in:
committed by
Copybara-Service
parent
019273c841
commit
feb3d276d4
@@ -200,7 +200,6 @@ set(ABSL_INTERNAL_DLL_FILES
|
||||
"log/initialize.cc"
|
||||
"log/initialize.h"
|
||||
"log/log.h"
|
||||
"log/log_entry.cc"
|
||||
"log/log_entry.h"
|
||||
"log/log_sink.cc"
|
||||
"log/log_sink.h"
|
||||
@@ -285,7 +284,6 @@ set(ABSL_INTERNAL_DLL_FILES
|
||||
"strings/cord.h"
|
||||
"strings/cord_analysis.cc"
|
||||
"strings/cord_analysis.h"
|
||||
"strings/cord_buffer.cc"
|
||||
"strings/cord_buffer.h"
|
||||
"strings/escaping.cc"
|
||||
"strings/escaping.h"
|
||||
|
||||
@@ -821,29 +821,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
||||
#define ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION 1
|
||||
#endif
|
||||
|
||||
// ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
//
|
||||
// Prior to C++17, static constexpr variables defined in classes required a
|
||||
// separate definition outside of the class body, for example:
|
||||
//
|
||||
// class Foo {
|
||||
// static constexpr int kBar = 0;
|
||||
// };
|
||||
// constexpr int Foo::kBar;
|
||||
//
|
||||
// In C++17, these variables defined in classes are considered inline variables,
|
||||
// and the extra declaration is redundant. Since some compilers warn on the
|
||||
// extra declarations, ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL can be used
|
||||
// conditionally ignore them:
|
||||
//
|
||||
// #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
// constexpr int Foo::kBar;
|
||||
// #endif
|
||||
#if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
|
||||
ABSL_INTERNAL_CPLUSPLUS_LANG < 201703L
|
||||
#define ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL 1
|
||||
#endif
|
||||
|
||||
// `ABSL_INTERNAL_HAS_RTTI` determines whether abseil is being compiled with
|
||||
// RTTI support.
|
||||
#ifdef ABSL_INTERNAL_HAS_RTTI
|
||||
|
||||
@@ -705,10 +705,6 @@ struct BasicGuaranteeWithExtraContracts : public NonNegative {
|
||||
static constexpr int kExceptionSentinel = 9999;
|
||||
};
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr int BasicGuaranteeWithExtraContracts::kExceptionSentinel;
|
||||
#endif
|
||||
|
||||
TEST(ExceptionCheckTest, BasicGuaranteeWithExtraContracts) {
|
||||
auto tester_with_val =
|
||||
tester.WithInitialValue(BasicGuaranteeWithExtraContracts{});
|
||||
|
||||
@@ -35,11 +35,6 @@ namespace base_internal {
|
||||
|
||||
#if ABSL_USE_UNSCALED_CYCLECLOCK
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr int32_t CycleClock::kShift;
|
||||
constexpr double CycleClock::kFrequencyScale;
|
||||
#endif
|
||||
|
||||
ABSL_CONST_INIT std::atomic<CycleClockSourceFunc>
|
||||
CycleClock::cycle_clock_source_{nullptr};
|
||||
|
||||
|
||||
@@ -28,11 +28,6 @@ struct FastTypeTag {
|
||||
constexpr static char dummy_var = 0;
|
||||
};
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
template <typename Type>
|
||||
constexpr char FastTypeTag<Type>::dummy_var;
|
||||
#endif
|
||||
|
||||
// FastTypeId<Type>() evaluates at compile/link-time to a unique pointer for the
|
||||
// passed-in type. These are meant to be good match for keys into maps or
|
||||
// straight up comparisons.
|
||||
|
||||
@@ -67,15 +67,6 @@ void RegisterSpinLockProfiler(void (*fn)(const void *contendedlock,
|
||||
submit_profile_data.Store(fn);
|
||||
}
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
// Static member variable definitions.
|
||||
constexpr uint32_t SpinLock::kSpinLockHeld;
|
||||
constexpr uint32_t SpinLock::kSpinLockCooperative;
|
||||
constexpr uint32_t SpinLock::kSpinLockDisabledScheduling;
|
||||
constexpr uint32_t SpinLock::kSpinLockSleeper;
|
||||
constexpr uint32_t SpinLock::kWaitTimeMask;
|
||||
#endif
|
||||
|
||||
// Uncommon constructors.
|
||||
SpinLock::SpinLock(base_internal::SchedulingMode mode)
|
||||
: lockword_(IsCooperative(mode) ? kSpinLockCooperative : 0) {
|
||||
|
||||
@@ -517,15 +517,6 @@ class ABSL_ATTRIBUTE_WARN_UNUSED FixedArray {
|
||||
Storage storage_;
|
||||
};
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
template <typename T, size_t N, typename A>
|
||||
constexpr size_t FixedArray<T, N, A>::kInlineBytesDefault;
|
||||
|
||||
template <typename T, size_t N, typename A>
|
||||
constexpr typename FixedArray<T, N, A>::size_type
|
||||
FixedArray<T, N, A>::inline_elements;
|
||||
#endif
|
||||
|
||||
template <typename T, size_t N, typename A>
|
||||
void FixedArray<T, N, A>::NonEmptyInlinedStorage::AnnotateConstruct(
|
||||
typename FixedArray<T, N, A>::size_type n) {
|
||||
|
||||
@@ -42,10 +42,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace container_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr int HashtablezInfo::kMaxStackDepth;
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
ABSL_CONST_INIT std::atomic<bool> g_hashtablez_enabled{
|
||||
false
|
||||
|
||||
@@ -66,10 +66,6 @@ ABSL_CONST_INIT ABSL_DLL const ctrl_t kSooControl[17] = {
|
||||
static_assert(NumControlBytes(SooCapacity()) <= 17,
|
||||
"kSooControl capacity too small");
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr size_t Group::kWidth;
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
// Returns "random" seed.
|
||||
|
||||
@@ -345,24 +345,6 @@ class CRC32AcceleratedX86ARMCombinedMultipleStreamsBase
|
||||
static constexpr size_t kMaxStreams = 3;
|
||||
};
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
alignas(16) constexpr uint64_t
|
||||
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::k1k2[2];
|
||||
alignas(16) constexpr uint64_t
|
||||
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::k3k4[2];
|
||||
alignas(16) constexpr uint64_t
|
||||
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::k5k6[2];
|
||||
alignas(16) constexpr uint64_t
|
||||
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::k7k0[2];
|
||||
alignas(16) constexpr uint64_t
|
||||
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::kPoly[2];
|
||||
alignas(16) constexpr uint32_t
|
||||
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::kMask[4];
|
||||
constexpr size_t
|
||||
CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::kGroupsSmall;
|
||||
constexpr size_t CRC32AcceleratedX86ARMCombinedMultipleStreamsBase::kMaxStreams;
|
||||
#endif // ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
|
||||
template <size_t num_crc_streams, size_t num_pclmul_streams,
|
||||
CutoffStrategy strategy>
|
||||
class CRC32AcceleratedX86ARMCombinedMultipleStreams
|
||||
|
||||
@@ -55,10 +55,6 @@ uint64_t MixingHashState::CombineLargeContiguousImpl64(
|
||||
|
||||
ABSL_CONST_INIT const void* const MixingHashState::kSeed = &kSeed;
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr uint64_t MixingHashState::kStaticRandomData[];
|
||||
#endif
|
||||
|
||||
uint64_t MixingHashState::LowLevelHashImpl(const unsigned char* data,
|
||||
size_t len) {
|
||||
return LowLevelHashLenGt16(data, len, Seed(), &kStaticRandomData[0]);
|
||||
|
||||
@@ -152,7 +152,6 @@ cc_library(
|
||||
|
||||
cc_library(
|
||||
name = "log_entry",
|
||||
srcs = ["log_entry.cc"],
|
||||
hdrs = ["log_entry.h"],
|
||||
copts = ABSL_DEFAULT_COPTS,
|
||||
linkopts = ABSL_DEFAULT_LINKOPTS,
|
||||
|
||||
@@ -557,8 +557,6 @@ absl_cc_library(
|
||||
absl_cc_library(
|
||||
NAME
|
||||
log_entry
|
||||
SRCS
|
||||
"log_entry.cc"
|
||||
HDRS
|
||||
"log_entry.h"
|
||||
COPTS
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
//
|
||||
// Copyright 2022 The Abseil Authors.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// https://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "absl/log/log_entry.h"
|
||||
|
||||
#include "absl/base/config.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr int LogEntry::kNoVerbosityLevel;
|
||||
constexpr int LogEntry::kNoVerboseLevel;
|
||||
#endif
|
||||
|
||||
// https://github.com/abseil/abseil-cpp/issues/1465
|
||||
// CMake builds on Apple platforms error when libraries are empty.
|
||||
// Our CMake configuration can avoid this error on header-only libraries,
|
||||
// but since this library is conditionally empty, including a single
|
||||
// variable is an easy workaround.
|
||||
#ifdef __APPLE__
|
||||
namespace log_internal {
|
||||
extern const char kAvoidEmptyLogEntryLibraryWarning;
|
||||
const char kAvoidEmptyLogEntryLibraryWarning = 0;
|
||||
} // namespace log_internal
|
||||
#endif // __APPLE__
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
@@ -342,55 +342,3 @@ std::ostream& operator<<(std::ostream& os, int128 v) {
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
namespace std {
|
||||
constexpr bool numeric_limits<absl::uint128>::is_specialized;
|
||||
constexpr bool numeric_limits<absl::uint128>::is_signed;
|
||||
constexpr bool numeric_limits<absl::uint128>::is_integer;
|
||||
constexpr bool numeric_limits<absl::uint128>::is_exact;
|
||||
constexpr bool numeric_limits<absl::uint128>::has_infinity;
|
||||
constexpr bool numeric_limits<absl::uint128>::has_quiet_NaN;
|
||||
constexpr bool numeric_limits<absl::uint128>::has_signaling_NaN;
|
||||
constexpr float_denorm_style numeric_limits<absl::uint128>::has_denorm;
|
||||
constexpr bool numeric_limits<absl::uint128>::has_denorm_loss;
|
||||
constexpr float_round_style numeric_limits<absl::uint128>::round_style;
|
||||
constexpr bool numeric_limits<absl::uint128>::is_iec559;
|
||||
constexpr bool numeric_limits<absl::uint128>::is_bounded;
|
||||
constexpr bool numeric_limits<absl::uint128>::is_modulo;
|
||||
constexpr int numeric_limits<absl::uint128>::digits;
|
||||
constexpr int numeric_limits<absl::uint128>::digits10;
|
||||
constexpr int numeric_limits<absl::uint128>::max_digits10;
|
||||
constexpr int numeric_limits<absl::uint128>::radix;
|
||||
constexpr int numeric_limits<absl::uint128>::min_exponent;
|
||||
constexpr int numeric_limits<absl::uint128>::min_exponent10;
|
||||
constexpr int numeric_limits<absl::uint128>::max_exponent;
|
||||
constexpr int numeric_limits<absl::uint128>::max_exponent10;
|
||||
constexpr bool numeric_limits<absl::uint128>::traps;
|
||||
constexpr bool numeric_limits<absl::uint128>::tinyness_before;
|
||||
|
||||
constexpr bool numeric_limits<absl::int128>::is_specialized;
|
||||
constexpr bool numeric_limits<absl::int128>::is_signed;
|
||||
constexpr bool numeric_limits<absl::int128>::is_integer;
|
||||
constexpr bool numeric_limits<absl::int128>::is_exact;
|
||||
constexpr bool numeric_limits<absl::int128>::has_infinity;
|
||||
constexpr bool numeric_limits<absl::int128>::has_quiet_NaN;
|
||||
constexpr bool numeric_limits<absl::int128>::has_signaling_NaN;
|
||||
constexpr float_denorm_style numeric_limits<absl::int128>::has_denorm;
|
||||
constexpr bool numeric_limits<absl::int128>::has_denorm_loss;
|
||||
constexpr float_round_style numeric_limits<absl::int128>::round_style;
|
||||
constexpr bool numeric_limits<absl::int128>::is_iec559;
|
||||
constexpr bool numeric_limits<absl::int128>::is_bounded;
|
||||
constexpr bool numeric_limits<absl::int128>::is_modulo;
|
||||
constexpr int numeric_limits<absl::int128>::digits;
|
||||
constexpr int numeric_limits<absl::int128>::digits10;
|
||||
constexpr int numeric_limits<absl::int128>::max_digits10;
|
||||
constexpr int numeric_limits<absl::int128>::radix;
|
||||
constexpr int numeric_limits<absl::int128>::min_exponent;
|
||||
constexpr int numeric_limits<absl::int128>::min_exponent10;
|
||||
constexpr int numeric_limits<absl::int128>::max_exponent;
|
||||
constexpr int numeric_limits<absl::int128>::max_exponent10;
|
||||
constexpr bool numeric_limits<absl::int128>::traps;
|
||||
constexpr bool numeric_limits<absl::int128>::tinyness_before;
|
||||
} // namespace std
|
||||
#endif
|
||||
|
||||
@@ -96,10 +96,6 @@ absl::Nonnull<const std::string*> Status::EmptyString() {
|
||||
return kEmpty.get();
|
||||
}
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr const char Status::kMovedFromString[];
|
||||
#endif
|
||||
|
||||
absl::Nonnull<const std::string*> Status::MovedFromString() {
|
||||
static const absl::NoDestructor<std::string> kMovedFrom(kMovedFromString);
|
||||
return kMovedFrom.get();
|
||||
|
||||
@@ -568,7 +568,6 @@ cc_library(
|
||||
"cord.cc",
|
||||
"cord_analysis.cc",
|
||||
"cord_analysis.h",
|
||||
"cord_buffer.cc",
|
||||
],
|
||||
hdrs = [
|
||||
"cord.h",
|
||||
|
||||
@@ -976,7 +976,6 @@ absl_cc_library(
|
||||
"cord.cc"
|
||||
"cord_analysis.cc"
|
||||
"cord_analysis.h"
|
||||
"cord_buffer.cc"
|
||||
COPTS
|
||||
${ABSL_DEFAULT_COPTS}
|
||||
DEPS
|
||||
|
||||
@@ -163,10 +163,6 @@ static absl::Nonnull<CordRep*> CordRepFromString(std::string&& src) {
|
||||
// --------------------------------------------------------------------
|
||||
// Cord::InlineRep functions
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr unsigned char Cord::InlineRep::kMaxInline;
|
||||
#endif
|
||||
|
||||
inline void Cord::InlineRep::set_data(absl::Nonnull<const char*> data,
|
||||
size_t n) {
|
||||
static_assert(kMaxInline == 15, "set_data is hard-coded for a length of 15");
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
// Copyright 2022 The Abseil Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// https://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "absl/strings/cord_buffer.h"
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#include "absl/base/config.h"
|
||||
|
||||
namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr size_t CordBuffer::kDefaultLimit;
|
||||
constexpr size_t CordBuffer::kCustomLimit;
|
||||
#endif
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
@@ -36,10 +36,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace cord_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr size_t CordRepBtree::kMaxCapacity;
|
||||
#endif
|
||||
|
||||
namespace {
|
||||
|
||||
using NodeStack = CordRepBtree * [CordRepBtree::kMaxDepth];
|
||||
|
||||
@@ -34,10 +34,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace cord_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr size_t CordzInfo::kMaxStackDepth;
|
||||
#endif
|
||||
|
||||
ABSL_CONST_INIT CordzInfo::List CordzInfo::global_list_{absl::kConstInit};
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -33,28 +33,6 @@ std::string FlagsToString(Flags v) {
|
||||
return s;
|
||||
}
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
|
||||
#define ABSL_INTERNAL_X_VAL(id) \
|
||||
constexpr absl::FormatConversionChar FormatConversionCharInternal::id;
|
||||
ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_X_VAL, )
|
||||
#undef ABSL_INTERNAL_X_VAL
|
||||
// NOLINTNEXTLINE(readability-redundant-declaration)
|
||||
constexpr absl::FormatConversionChar FormatConversionCharInternal::kNone;
|
||||
|
||||
#define ABSL_INTERNAL_CHAR_SET_CASE(c) \
|
||||
constexpr FormatConversionCharSet FormatConversionCharSetInternal::c;
|
||||
ABSL_INTERNAL_CONVERSION_CHARS_EXPAND_(ABSL_INTERNAL_CHAR_SET_CASE, )
|
||||
#undef ABSL_INTERNAL_CHAR_SET_CASE
|
||||
|
||||
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kStar;
|
||||
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kIntegral;
|
||||
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kFloating;
|
||||
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kNumeric;
|
||||
constexpr FormatConversionCharSet FormatConversionCharSetInternal::kPointer;
|
||||
|
||||
#endif // ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
|
||||
bool FormatSinkImpl::PutPaddedString(string_view value, int width,
|
||||
int precision, bool left) {
|
||||
size_t space_remaining = 0;
|
||||
|
||||
@@ -50,11 +50,6 @@ struct StringConstant {
|
||||
"The input string_view must point to constant data.");
|
||||
};
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
template <typename T>
|
||||
constexpr absl::string_view StringConstant<T>::value;
|
||||
#endif
|
||||
|
||||
// Factory function for `StringConstant` instances.
|
||||
// It supports callables that have a constexpr default constructor and a
|
||||
// constexpr operator().
|
||||
|
||||
@@ -233,11 +233,6 @@ string_view::size_type string_view::find_last_not_of(
|
||||
return npos;
|
||||
}
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr string_view::size_type string_view::npos;
|
||||
constexpr string_view::size_type string_view::kMaxSize;
|
||||
#endif
|
||||
|
||||
ABSL_NAMESPACE_END
|
||||
} // namespace absl
|
||||
|
||||
|
||||
@@ -31,10 +31,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr char FutexWaiter::kName[];
|
||||
#endif
|
||||
|
||||
int FutexWaiter::WaitUntil(std::atomic<int32_t>* v, int32_t val,
|
||||
KernelTimeout t) {
|
||||
#ifdef CLOCK_MONOTONIC
|
||||
|
||||
@@ -35,11 +35,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr uint64_t KernelTimeout::kNoTimeout;
|
||||
constexpr int64_t KernelTimeout::kMaxNanos;
|
||||
#endif
|
||||
|
||||
int64_t KernelTimeout::SteadyClockNow() {
|
||||
if (!SupportsSteadyClock()) {
|
||||
return absl::GetCurrentTimeNanos();
|
||||
|
||||
@@ -58,10 +58,6 @@ class PthreadMutexHolder {
|
||||
};
|
||||
} // namespace
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr char PthreadWaiter::kName[];
|
||||
#endif
|
||||
|
||||
PthreadWaiter::PthreadWaiter() : waiter_count_(0), wakeup_count_(0) {
|
||||
const int err = pthread_mutex_init(&mu_, 0);
|
||||
if (err != 0) {
|
||||
|
||||
@@ -33,10 +33,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr char SemWaiter::kName[];
|
||||
#endif
|
||||
|
||||
SemWaiter::SemWaiter() : wakeups_(0) {
|
||||
if (sem_init(&sem_, 0, 0) != 0) {
|
||||
ABSL_RAW_LOG(FATAL, "sem_init failed with errno %d\n", errno);
|
||||
|
||||
@@ -30,10 +30,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr char StdcppWaiter::kName[];
|
||||
#endif
|
||||
|
||||
StdcppWaiter::StdcppWaiter() : waiter_count_(0), wakeup_count_(0) {}
|
||||
|
||||
bool StdcppWaiter::Wait(KernelTimeout t) {
|
||||
|
||||
@@ -21,10 +21,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr int WaiterBase::kIdlePeriods;
|
||||
#endif
|
||||
|
||||
void WaiterBase::MaybeBecomeIdle() {
|
||||
base_internal::ThreadIdentity *identity =
|
||||
base_internal::CurrentThreadIdentityIfPresent();
|
||||
|
||||
@@ -28,10 +28,6 @@ namespace absl {
|
||||
ABSL_NAMESPACE_BEGIN
|
||||
namespace synchronization_internal {
|
||||
|
||||
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
||||
constexpr char Win32Waiter::kName[];
|
||||
#endif
|
||||
|
||||
class Win32Waiter::WinHelper {
|
||||
public:
|
||||
static SRWLOCK *GetLock(Win32Waiter *w) {
|
||||
|
||||
Reference in New Issue
Block a user