about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2019-02-28T17·21-0800
committerDerek Mauro <dmauro@google.com>2019-03-04T14·41-0500
commit419f3184f8ebcdb23105295eadd2a569f3351eb9 (patch)
tree6ff54227e51347066d376c1e2a5da44801077ae0
parentb312c3cb53a0aad75a85ac2bf57c4a614fbd48d4 (diff)
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
-rw-r--r--absl/base/config.h4
-rw-r--r--absl/container/BUILD.bazel23
-rw-r--r--absl/container/CMakeLists.txt24
-rw-r--r--absl/container/internal/hashtablez_force_sampling.cc24
-rw-r--r--absl/container/internal/hashtablez_force_sampling_test.cc60
-rw-r--r--absl/strings/charconv.cc7
6 files changed, 6 insertions, 136 deletions
diff --git a/absl/base/config.h b/absl/base/config.h
index db4c45390222..eb0d79dfe39f 100644
--- a/absl/base/config.h
+++ b/absl/base/config.h
@@ -118,7 +118,7 @@
 // Checks whether `std::is_trivially_copy_assignable<T>` is supported.
 
 // 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)
 #error ABSL_HAVE_STD_IS_TRIVIALLY_CONSTRUCTIBLE cannot be directly set
 #elif defined(ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE)
@@ -127,7 +127,7 @@
     (!defined(__clang__) && defined(__GNUC__) &&                 \
      (__GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)) && \
      (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_ASSIGNABLE 1
 #endif
diff --git a/absl/container/BUILD.bazel b/absl/container/BUILD.bazel
index f3b3a2c0b42f..91013e04b0d0 100644
--- a/absl/container/BUILD.bazel
+++ b/absl/container/BUILD.bazel
@@ -447,15 +447,6 @@ cc_library(
 )
 
 cc_library(
-    name = "hashtablez_force_sampling",
-    srcs = ["internal/hashtablez_force_sampling.cc"],
-    copts = ABSL_DEFAULT_COPTS,
-    deps = [
-        ":hashtablez_sampler",
-    ],
-)
-
-cc_library(
     name = "hashtablez_sampler",
     srcs = [
         "internal/hashtablez_sampler.cc",
@@ -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(
     name = "node_hash_policy",
     hdrs = ["internal/node_hash_policy.h"],
diff --git a/absl/container/CMakeLists.txt b/absl/container/CMakeLists.txt
index 822388bd5518..c6053d745799 100644
--- a/absl/container/CMakeLists.txt
+++ b/absl/container/CMakeLists.txt
@@ -466,30 +466,6 @@ absl_cc_test(
 
 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(
-  NAME
     hashtable_debug
   HDRS
     "internal/hashtable_debug.h"
diff --git a/absl/container/internal/hashtablez_force_sampling.cc b/absl/container/internal/hashtablez_force_sampling.cc
deleted file mode 100644
index 868976ec5240..000000000000
--- a/absl/container/internal/hashtablez_force_sampling.cc
+++ /dev/null
@@ -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
diff --git a/absl/container/internal/hashtablez_force_sampling_test.cc b/absl/container/internal/hashtablez_force_sampling_test.cc
deleted file mode 100644
index 9ff1046a9ad3..000000000000
--- a/absl/container/internal/hashtablez_force_sampling_test.cc
+++ /dev/null
@@ -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
diff --git a/absl/strings/charconv.cc b/absl/strings/charconv.cc
index c7b8c98b1b44..d0aa19134aa2 100644
--- a/absl/strings/charconv.cc
+++ b/absl/strings/charconv.cc
@@ -551,9 +551,10 @@ CalculatedFloat CalculateFromParsedDecimal(
   int binary_exponent = Power10Exponent(parsed_decimal.exponent);
 
   // Discard bits that are inaccurate due to truncation error.  The magic
-  // `mantissa_width` constants below are justified in charconv_algorithm.md.
-  // They represent the number of bits in `wide_binary_mantissa` that are
-  // guaranteed to be unaffected by error propagation.
+  // `mantissa_width` constants below are justified in
+  // https://abseil.io/about/design/charconv. They represent the number of bits
+  // in `wide_binary_mantissa` that are guaranteed to be unaffected by error
+  // propagation.
   bool mantissa_exact;
   int mantissa_width;
   if (parsed_decimal.subrange_begin) {