Commit c79e6b3d by Derek Mauro Committed by Copybara-Service

Use absl::NoDestructor to replace a bespoke optimized implementation

PiperOrigin-RevId: 580596792
Change-Id: I2f79c9b719e7e95a181b6641e8da191cf0a4d71a
parent 8c488c44
...@@ -53,6 +53,7 @@ cc_library( ...@@ -53,6 +53,7 @@ cc_library(
"//absl/base:atomic_hook", "//absl/base:atomic_hook",
"//absl/base:config", "//absl/base:config",
"//absl/base:core_headers", "//absl/base:core_headers",
"//absl/base:no_destructor",
"//absl/base:raw_logging_internal", "//absl/base:raw_logging_internal",
"//absl/base:strerror", "//absl/base:strerror",
"//absl/container:inlined_vector", "//absl/container:inlined_vector",
......
...@@ -36,6 +36,7 @@ absl_cc_library( ...@@ -36,6 +36,7 @@ absl_cc_library(
absl::function_ref absl::function_ref
absl::inlined_vector absl::inlined_vector
absl::memory absl::memory
absl::no_destructor
absl::optional absl::optional
absl::raw_logging_internal absl::raw_logging_internal
absl::span absl::span
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "absl/base/internal/raw_logging.h" #include "absl/base/internal/raw_logging.h"
#include "absl/base/internal/strerror.h" #include "absl/base/internal/strerror.h"
#include "absl/base/macros.h" #include "absl/base/macros.h"
#include "absl/base/no_destructor.h"
#include "absl/debugging/stacktrace.h" #include "absl/debugging/stacktrace.h"
#include "absl/debugging/symbolize.h" #include "absl/debugging/symbolize.h"
#include "absl/status/internal/status_internal.h" #include "absl/status/internal/status_internal.h"
...@@ -90,11 +91,8 @@ std::ostream& operator<<(std::ostream& os, StatusCode code) { ...@@ -90,11 +91,8 @@ std::ostream& operator<<(std::ostream& os, StatusCode code) {
} }
const std::string* Status::EmptyString() { const std::string* Status::EmptyString() {
static union EmptyString { static const absl::NoDestructor<std::string> kEmpty;
std::string str; return kEmpty.get();
~EmptyString() {}
} empty = {{}};
return &empty.str;
} }
#ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
...@@ -102,8 +100,8 @@ constexpr const char Status::kMovedFromString[]; ...@@ -102,8 +100,8 @@ constexpr const char Status::kMovedFromString[];
#endif #endif
const std::string* Status::MovedFromString() { const std::string* Status::MovedFromString() {
static std::string* moved_from_string = new std::string(kMovedFromString); static const absl::NoDestructor<std::string> kMovedFrom(kMovedFromString);
return moved_from_string; return kMovedFrom.get();
} }
Status::Status(absl::StatusCode code, absl::string_view msg) Status::Status(absl::StatusCode code, absl::string_view msg)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment