From 29f8307d8e629e989bf26a84ab1a49a0738a5470 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 20 Sep 2021 13:35:36 -0700 Subject: Export of internal Abseil changes -- d56207f5535c3aad1624e33d20777ea6e66f51a7 by Abseil Team : Internal change PiperOrigin-RevId: 397830482 -- 7f7ff3e88e0d3cd61d63da477b2a08e61a1aeea2 by Evan Brown : Update implementation details comment in raw_hash_set to include information about the heap allocation's layout. PiperOrigin-RevId: 397786239 -- fde783b12a79ae8d587d1027bc8736dff6844897 by Abseil Team : Add comments on #endif to make nesting clearer PiperOrigin-RevId: 397684219 GitOrigin-RevId: d56207f5535c3aad1624e33d20777ea6e66f51a7 Change-Id: I43dc2b5c982f1ef2b21f82b6133c49c428baf223 --- absl/container/internal/raw_hash_set.h | 11 +++++++++++ absl/debugging/internal/stacktrace_config.h | 11 ++++++----- absl/profiling/BUILD.bazel | 4 +++- 3 files changed, 20 insertions(+), 6 deletions(-) (limited to 'absl') diff --git a/absl/container/internal/raw_hash_set.h b/absl/container/internal/raw_hash_set.h index 212052ea..5c5db12e 100644 --- a/absl/container/internal/raw_hash_set.h +++ b/absl/container/internal/raw_hash_set.h @@ -87,6 +87,17 @@ // // This probing function guarantees that after N probes, all the groups of the // table will be probed exactly once. +// +// The control state and slot array are stored contiguously in a shared heap +// allocation. The layout of this allocation is: `capacity()` control bytes, +// one sentinel control byte, `Group::kWidth - 1` cloned control bytes, +// , `capacity()` slots. The sentinel control byte is used in +// iteration so we know when we reach the end of the table. The cloned control +// bytes at the end of the table are cloned from the beginning of the table so +// groups that begin near the end of the table can see a full group. In cases in +// which there are more than `capacity()` cloned control bytes, the extra bytes +// are `kEmpty`, and these ensure that we always see at least one empty slot and +// can stop an unsuccessful search. #ifndef ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_ #define ABSL_CONTAINER_INTERNAL_RAW_HASH_SET_H_ diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h index 29b26bdd..ff21b719 100644 --- a/absl/debugging/internal/stacktrace_config.h +++ b/absl/debugging/internal/stacktrace_config.h @@ -35,7 +35,7 @@ // Thread local support required for UnwindImpl. #define ABSL_STACKTRACE_INL_HEADER \ "absl/debugging/internal/stacktrace_generic-inl.inc" -#endif +#endif // defined(ABSL_HAVE_THREAD_LOCAL) #elif defined(__EMSCRIPTEN__) #define ABSL_STACKTRACE_INL_HEADER \ @@ -55,7 +55,7 @@ // Note: When using glibc this may require -funwind-tables to function properly. #define ABSL_STACKTRACE_INL_HEADER \ "absl/debugging/internal/stacktrace_generic-inl.inc" -#endif +#endif // __has_include() #elif defined(__i386__) || defined(__x86_64__) #define ABSL_STACKTRACE_INL_HEADER \ "absl/debugging/internal/stacktrace_x86-inl.inc" @@ -73,9 +73,10 @@ // Note: When using glibc this may require -funwind-tables to function properly. #define ABSL_STACKTRACE_INL_HEADER \ "absl/debugging/internal/stacktrace_generic-inl.inc" -#endif -#endif -#endif +#endif // __has_include() +#endif // defined(__has_include) + +#endif // defined(__linux__) && !defined(__ANDROID__) // Fallback to the empty implementation. #if !defined(ABSL_STACKTRACE_INL_HEADER) diff --git a/absl/profiling/BUILD.bazel b/absl/profiling/BUILD.bazel index 5f3a1030..ba4811b3 100644 --- a/absl/profiling/BUILD.bazel +++ b/absl/profiling/BUILD.bazel @@ -27,7 +27,9 @@ cc_library( hdrs = ["internal/sample_recorder.h"], copts = ABSL_DEFAULT_COPTS, linkopts = ABSL_DEFAULT_LINKOPTS, - visibility = ["//absl:__subpackages__"], + visibility = [ + "//absl:__subpackages__", + ], deps = [ "//absl/base:config", "//absl/base:core_headers", -- cgit v1.2.3