Skip to content

Commit 984c69a

Browse files
jckingcopybara-github
authored andcommitted
Avoid std::invoke and just directly call visitors to avoid ugly frames in pprof
PiperOrigin-RevId: 739254948
1 parent b1e0b7c commit 984c69a

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

common/internal/byte_string.h

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -303,16 +303,14 @@ ByteString final {
303303
void HashValue(absl::HashState state) const;
304304

305305
template <typename Visitor>
306-
std::common_type_t<std::invoke_result_t<Visitor, absl::string_view>,
307-
std::invoke_result_t<Visitor, const absl::Cord&>>
308-
Visit(Visitor&& visitor) const {
306+
decltype(auto) Visit(Visitor&& visitor) const {
309307
switch (GetKind()) {
310308
case ByteStringKind::kSmall:
311-
return std::invoke(std::forward<Visitor>(visitor), GetSmall());
309+
return std::forward<Visitor>(visitor)(GetSmall());
312310
case ByteStringKind::kMedium:
313-
return std::invoke(std::forward<Visitor>(visitor), GetMedium());
311+
return std::forward<Visitor>(visitor)(GetMedium());
314312
case ByteStringKind::kLarge:
315-
return std::invoke(std::forward<Visitor>(visitor), GetLarge());
313+
return std::forward<Visitor>(visitor)(GetLarge());
316314
}
317315
}
318316

@@ -657,15 +655,13 @@ class ABSL_ATTRIBUTE_TRIVIAL_ABI ByteStringView final {
657655
void HashValue(absl::HashState state) const;
658656

659657
template <typename Visitor>
660-
std::common_type_t<std::invoke_result_t<Visitor, absl::string_view>,
661-
std::invoke_result_t<Visitor, const absl::Cord&>>
662-
Visit(Visitor&& visitor) const {
658+
decltype(auto) Visit(Visitor&& visitor) const {
663659
switch (GetKind()) {
664660
case ByteStringViewKind::kString:
665-
return std::invoke(std::forward<Visitor>(visitor), GetString());
661+
return std::forward<Visitor>(visitor)(GetString());
666662
case ByteStringViewKind::kCord:
667-
return std::invoke(std::forward<Visitor>(visitor),
668-
static_cast<const absl::Cord&>(GetSubcord()));
663+
return std::forward<Visitor>(visitor)(
664+
static_cast<const absl::Cord&>(GetSubcord()));
669665
}
670666
}
671667

0 commit comments

Comments
 (0)