From b97a1ecda869ca8754d467a56c50275cebfeb328 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Fri, 9 Apr 2021 08:51:11 -0700 Subject: Export of internal Abseil changes -- 9bd9d083a21d1436816dc842a80d4339aa49a24b by Abseil Team : Inline Status::NewRep, pass `message` via string_view in StatusRep ctor PiperOrigin-RevId: 367641069 -- 9cebe53e8f1717f82394501fd9f4bc70d2051b33 by Benjamin Barenblat : Fix typo in CordRepRing error message PiperOrigin-RevId: 367481280 GitOrigin-RevId: 9bd9d083a21d1436816dc842a80d4339aa49a24b Change-Id: Ie2c51bf6f46abed5c2317ceee30bd2bb59502f8e --- absl/status/internal/status_internal.h | 4 ++-- absl/status/status.cc | 22 +++++++--------------- absl/strings/internal/cord_rep_ring.cc | 2 +- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/absl/status/internal/status_internal.h b/absl/status/internal/status_internal.h index 99a2d96..ccafd70 100644 --- a/absl/status/internal/status_internal.h +++ b/absl/status/internal/status_internal.h @@ -47,11 +47,11 @@ using Payloads = absl::InlinedVector; // Reference-counted representation of Status data. struct StatusRep { - StatusRep(absl::StatusCode code, std::string message, + StatusRep(absl::StatusCode code, absl::string_view message, std::unique_ptr payloads) : ref(int32_t{1}), code(code), - message(std::move(message)), + message(message), payloads(std::move(payloads)) {} std::atomic ref; diff --git a/absl/status/status.cc b/absl/status/status.cc index 51a0d26..5a5cd5c 100644 --- a/absl/status/status.cc +++ b/absl/status/status.cc @@ -207,19 +207,10 @@ void Status::UnrefNonInlined(uintptr_t rep) { } } -uintptr_t Status::NewRep( - absl::StatusCode code, absl::string_view msg, - std::unique_ptr payloads) { - status_internal::StatusRep* rep = new status_internal::StatusRep( - code, std::string(msg.data(), msg.size()), - std::move(payloads)); - return PointerToRep(rep); -} - Status::Status(absl::StatusCode code, absl::string_view msg) : rep_(CodeToInlinedRep(code)) { if (code != absl::StatusCode::kOk && !msg.empty()) { - rep_ = NewRep(code, msg, nullptr); + rep_ = PointerToRep(new status_internal::StatusRep(code, msg, nullptr)); } } @@ -238,9 +229,9 @@ absl::StatusCode Status::code() const { void Status::PrepareToModify() { ABSL_RAW_CHECK(!ok(), "PrepareToModify shouldn't be called on OK status."); if (IsInlined(rep_)) { - rep_ = - NewRep(static_cast(raw_code()), absl::string_view(), - nullptr); + rep_ = PointerToRep(new status_internal::StatusRep( + static_cast(raw_code()), absl::string_view(), + nullptr)); return; } @@ -251,8 +242,9 @@ void Status::PrepareToModify() { if (rep->payloads) { payloads = absl::make_unique(*rep->payloads); } - rep_ = NewRep(rep->code, message(), - std::move(payloads)); + status_internal::StatusRep* const new_rep = new status_internal::StatusRep( + rep->code, message(), std::move(payloads)); + rep_ = PointerToRep(new_rep); UnrefNonInlined(rep_i); } } diff --git a/absl/strings/internal/cord_rep_ring.cc b/absl/strings/internal/cord_rep_ring.cc index cb95b19..0995129 100644 --- a/absl/strings/internal/cord_rep_ring.cc +++ b/absl/strings/internal/cord_rep_ring.cc @@ -301,7 +301,7 @@ bool CordRepRing::IsValid(std::ostream& output) const { if (offset >= child->length || entry_length > child->length - offset) { output << "entry[" << head << "] has offset " << offset << " and entry length " << entry_length - << " which are outside of the childs length of " << child->length; + << " which are outside of the child's length of " << child->length; return false; } -- cgit v1.2.3