diff options
author | Abseil Team <absl-team@google.com> | 2020-07-28 11:13:39 -0700 |
---|---|---|
committer | Mark Barolak <mbar@google.com> | 2020-07-28 14:37:27 -0400 |
commit | dea76486cb76c7e1032a5efc15b43538b7c5ce50 (patch) | |
tree | 4c7b7f6bbd39d399b446fdfd9cb6cb37c44e914a /absl/flags/reflection.cc | |
parent | d39fe6cd6f5eb72dc741f17d3a143a6a5a56538a (diff) | |
download | abseil-dea76486cb76c7e1032a5efc15b43538b7c5ce50.tar.gz abseil-dea76486cb76c7e1032a5efc15b43538b7c5ce50.tar.bz2 abseil-dea76486cb76c7e1032a5efc15b43538b7c5ce50.zip |
Export of internal Abseil changes
--
e1d2e93a3328d9e4362c5510e81bd15ddd0dcf00 by Derek Mauro <dmauro@google.com>:
ROLLBACK: Use auto-detected sanitizer attributes for ASAN, MSAN, and TSAN builds
PiperOrigin-RevId: 323612219
--
6fe0914715bcb680ac1dc533aae3461e2ca1ad50 by Derek Mauro <dmauro@google.com>:
Use auto-detected sanitizer attributes for ASAN, MSAN, and TSAN builds
PiperOrigin-RevId: 323597765
--
9ad74e277348585f06a511aac31fff917a89a5d7 by Mark Barolak <mbar@google.com>:
Import of CCTZ from GitHub.
PiperOrigin-RevId: 323594550
--
9e77ccb5adf7e9867cfa254105930f8fed19699d by Evan Brown <ezb@google.com>:
Remove an unnecessary nullptr check in Cord::PrependTree().
We already check for nullptr at all callsites.
PiperOrigin-RevId: 323583641
--
31ab2355c1b91e474b67ff88b8597ad99f346511 by Gennadiy Rozental <rogeeff@google.com>:
Avoid memory allocations while registering retired flags.
PiperOrigin-RevId: 323523011
--
33435e9b97b31763a80d3e41b5ab2459e862e99a by Jorg Brown <jorg@google.com>:
Allow ABSL_PREDICT_FALSE to be used with a type that's explicitly convertible to bool.
So far ABSL_PREDICT_TRUE could be used with these, but not ABSL_PREDICT_FALSE.
PiperOrigin-RevId: 323514860
GitOrigin-RevId: e1d2e93a3328d9e4362c5510e81bd15ddd0dcf00
Change-Id: Iee5b030d9aec1ae2c0fe8997763cee7bd84b4090
Diffstat (limited to 'absl/flags/reflection.cc')
-rw-r--r-- | absl/flags/reflection.cc | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/absl/flags/reflection.cc b/absl/flags/reflection.cc index 1b025835..e4145b34 100644 --- a/absl/flags/reflection.cc +++ b/absl/flags/reflection.cc @@ -99,8 +99,6 @@ class FlagRegistryLock { FlagRegistry& fr_; }; -void DestroyRetiredFlag(CommandLineFlag& flag); - } // namespace void FlagRegistry::RegisterFlag(CommandLineFlag& flag) { @@ -125,8 +123,6 @@ void FlagRegistry::RegisterFlag(CommandLineFlag& flag) { old_flag.Filename(), "' and '", flag.Filename(), "'."), true); } else if (old_flag.IsRetired()) { - // Retired flag can just be deleted. - DestroyRetiredFlag(flag); return; } else if (old_flag.Filename() != flag.Filename()) { flags_internal::ReportUsageError( @@ -241,17 +237,14 @@ class RetiredFlagObj final : public CommandLineFlag { const FlagFastTypeId type_id_; }; -void DestroyRetiredFlag(CommandLineFlag& flag) { - assert(flag.IsRetired()); - delete static_cast<RetiredFlagObj*>(&flag); -} - } // namespace -bool Retire(const char* name, FlagFastTypeId type_id) { - auto* flag = new flags_internal::RetiredFlagObj(name, type_id); +void Retire(const char* name, FlagFastTypeId type_id, char* buf) { + static_assert(sizeof(RetiredFlagObj) == kRetiredFlagObjSize, ""); + static_assert(alignof(RetiredFlagObj) == kRetiredFlagObjAlignment, ""); + auto* flag = ::new (static_cast<void*>(buf)) + flags_internal::RetiredFlagObj(name, type_id); FlagRegistry::GlobalRegistry().RegisterFlag(*flag); - return true; } // -------------------------------------------------------------------- |