Export of internal Abseil changes.
-- 92e1bd6dc9e64163659028b640427d6d8573e41c by Abseil Team <absl-team@google.com>: Don't enable ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE with MSVC when used with nvcc. With nvcc on Windows __has_trivial_assign(int) is false; that leads to a failure of the check in is_trivially_copy_assignable. A better solution would probably be to use the std-provided check in this case, but that seems like a more intrusive change. PiperOrigin-RevId: 236135209 -- 26cee4a7e647076b4e2f88375b4848d1469e55ed by Derek Mauro <dmauro@google.com>: Remove hashtablez_force_sampling from the open-source release. This should not have been released. It is internal-only and not portable. Fixes https://github.com/abseil/abseil-cpp/issues/268 PiperOrigin-RevId: 235978666 -- 935a885ec0e108963014f1bb79f00102da8f3871 by CJ Johnson <johnsoncj@google.com>: Internal change PiperOrigin-RevId: 235976027 -- 1c148c89de6064031f1ad9f2eeac0331bd77b7b0 by Tom Manshreck <shreck@google.com>: Add design note for absl::from_chars to abseil.io Fixes #165 PiperOrigin-RevId: 235975923 GitOrigin-RevId: 92e1bd6dc9e64163659028b640427d6d8573e41c Change-Id: I220b0bbb46742070ea8c2a94b06007ecae76fe0f
This commit is contained in:
parent
b312c3cb53
commit
419f3184f8
6 changed files with 6 additions and 136 deletions
|
@ -118,7 +118,7 @@
|
||||||
// Checks whether `std::is_trivially_copy_assignable<T>` is supported.
|
// Checks whether `std::is_trivially_copy_assignable<T>` is supported.
|
||||||
|
|
||||||
// Notes: Clang with libc++ supports these features, as does gcc >= 5.1 with
|
// Notes: Clang with libc++ supports these features, as does gcc >= 5.1 with
|
||||||
// either libc++ or libstdc++, and Visual Studio.
|
// either libc++ or libstdc++, and Visual Studio (but not NVCC).
|
||||||
#if defined(ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE)
|
#if defined(ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE)
|
||||||
#error ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE cannot be directly set
|
#error ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE cannot be directly set
|
||||||
#elif defined(ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE)
|
#elif defined(ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE)
|
||||||
|
@ -127,7 +127,7 @@
|
||||||
(!defined(__clang__) && defined(__GNUC__) && \
|
(!defined(__clang__) && defined(__GNUC__) && \
|
||||||
(__GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)) && \
|
(__GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)) && \
|
||||||
(defined(_LIBCPP_VERSION) || defined(__GLIBCXX__))) || \
|
(defined(_LIBCPP_VERSION) || defined(__GLIBCXX__))) || \
|
||||||
defined(_MSC_VER)
|
(defined(_MSC_VER) && !defined(__NVCC__))
|
||||||
#define ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE 1
|
#define ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE 1
|
||||||
#define ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE 1
|
#define ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -446,15 +446,6 @@ cc_library(
|
||||||
copts = ABSL_DEFAULT_COPTS,
|
copts = ABSL_DEFAULT_COPTS,
|
||||||
)
|
)
|
||||||
|
|
||||||
cc_library(
|
|
||||||
name = "hashtablez_force_sampling",
|
|
||||||
srcs = ["internal/hashtablez_force_sampling.cc"],
|
|
||||||
copts = ABSL_DEFAULT_COPTS,
|
|
||||||
deps = [
|
|
||||||
":hashtablez_sampler",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "hashtablez_sampler",
|
name = "hashtablez_sampler",
|
||||||
srcs = [
|
srcs = [
|
||||||
|
@ -488,20 +479,6 @@ cc_test(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
cc_test(
|
|
||||||
name = "hashtablez_force_sampling_test",
|
|
||||||
srcs = ["internal/hashtablez_force_sampling_test.cc"],
|
|
||||||
tags = [
|
|
||||||
"no_test_darwin_x86_64",
|
|
||||||
"no_test_msvc_x64",
|
|
||||||
],
|
|
||||||
deps = [
|
|
||||||
":hashtablez_force_sampling",
|
|
||||||
":hashtablez_sampler",
|
|
||||||
"@com_google_googletest//:gtest_main",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "node_hash_policy",
|
name = "node_hash_policy",
|
||||||
hdrs = ["internal/node_hash_policy.h"],
|
hdrs = ["internal/node_hash_policy.h"],
|
||||||
|
|
|
@ -464,30 +464,6 @@ absl_cc_test(
|
||||||
gmock_main
|
gmock_main
|
||||||
)
|
)
|
||||||
|
|
||||||
absl_cc_library(
|
|
||||||
NAME
|
|
||||||
hashtablez_force_sampling
|
|
||||||
SRCS
|
|
||||||
"internal/hashtablez_force_sampling.cc"
|
|
||||||
COPTS
|
|
||||||
${ABSL_DEFAULT_COPTS}
|
|
||||||
DEPS
|
|
||||||
absl::base
|
|
||||||
absl::have_sse
|
|
||||||
absl::synchronization
|
|
||||||
)
|
|
||||||
|
|
||||||
absl_cc_test(
|
|
||||||
NAME
|
|
||||||
hashtablez_force_sampling_test
|
|
||||||
SRCS
|
|
||||||
"internal/hashtablez_force_sampling_test.cc"
|
|
||||||
DEPS
|
|
||||||
absl::hashtablez_force_sampling
|
|
||||||
absl::hashtablez_sampler
|
|
||||||
gmock_main
|
|
||||||
)
|
|
||||||
|
|
||||||
absl_cc_library(
|
absl_cc_library(
|
||||||
NAME
|
NAME
|
||||||
hashtable_debug
|
hashtable_debug
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
// Copyright 2018 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
|
|
||||||
//
|
|
||||||
// http://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/container/internal/hashtablez_sampler.h"
|
|
||||||
|
|
||||||
namespace absl {
|
|
||||||
namespace container_internal {
|
|
||||||
|
|
||||||
// See hashtablez_sampler.h for details.
|
|
||||||
extern "C" const bool kAbslContainerInternalSampleEverything = true;
|
|
||||||
|
|
||||||
} // namespace container_internal
|
|
||||||
} // namespace absl
|
|
|
@ -1,60 +0,0 @@
|
||||||
// Copyright 2018 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
|
|
||||||
//
|
|
||||||
// http://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 <cstddef>
|
|
||||||
|
|
||||||
#include "gmock/gmock.h"
|
|
||||||
#include "gtest/gtest.h"
|
|
||||||
#include "absl/container/internal/hashtablez_sampler.h"
|
|
||||||
|
|
||||||
namespace absl {
|
|
||||||
namespace container_internal {
|
|
||||||
|
|
||||||
class HashtablezInfoHandlePeer {
|
|
||||||
public:
|
|
||||||
static bool IsSampled(const HashtablezInfoHandle& h) {
|
|
||||||
return h.info_ != nullptr;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
bool samples[3]{true, true, true};
|
|
||||||
|
|
||||||
// We do this test in a global object to test that this works even before main.
|
|
||||||
struct Global {
|
|
||||||
Global() {
|
|
||||||
// By default it is sampled.
|
|
||||||
samples[0] = HashtablezInfoHandlePeer::IsSampled(Sample());
|
|
||||||
|
|
||||||
// Even with a large parameter, it is sampled.
|
|
||||||
SetHashtablezSampleParameter(100);
|
|
||||||
samples[1] = HashtablezInfoHandlePeer::IsSampled(Sample());
|
|
||||||
|
|
||||||
// Even if we turn it off, it is still sampled.
|
|
||||||
SetHashtablezEnabled(false);
|
|
||||||
samples[2] = HashtablezInfoHandlePeer::IsSampled(Sample());
|
|
||||||
}
|
|
||||||
} global;
|
|
||||||
|
|
||||||
TEST(kAbslContainerInternalSampleEverything, Works) {
|
|
||||||
EXPECT_THAT(samples, testing::Each(true));
|
|
||||||
EXPECT_TRUE(kAbslContainerInternalSampleEverything);
|
|
||||||
// One more after main()
|
|
||||||
EXPECT_TRUE(HashtablezInfoHandlePeer::IsSampled(Sample()));
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
} // namespace container_internal
|
|
||||||
} // namespace absl
|
|
|
@ -551,9 +551,10 @@ CalculatedFloat CalculateFromParsedDecimal(
|
||||||
int binary_exponent = Power10Exponent(parsed_decimal.exponent);
|
int binary_exponent = Power10Exponent(parsed_decimal.exponent);
|
||||||
|
|
||||||
// Discard bits that are inaccurate due to truncation error. The magic
|
// Discard bits that are inaccurate due to truncation error. The magic
|
||||||
// `mantissa_width` constants below are justified in charconv_algorithm.md.
|
// `mantissa_width` constants below are justified in
|
||||||
// They represent the number of bits in `wide_binary_mantissa` that are
|
// https://abseil.io/about/design/charconv. They represent the number of bits
|
||||||
// guaranteed to be unaffected by error propagation.
|
// in `wide_binary_mantissa` that are guaranteed to be unaffected by error
|
||||||
|
// propagation.
|
||||||
bool mantissa_exact;
|
bool mantissa_exact;
|
||||||
int mantissa_width;
|
int mantissa_width;
|
||||||
if (parsed_decimal.subrange_begin) {
|
if (parsed_decimal.subrange_begin) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue