修改pods
This commit is contained in:
@@ -18,12 +18,18 @@
|
||||
#include <atomic>
|
||||
#include <cassert>
|
||||
#include <cmath>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <limits>
|
||||
|
||||
#include "absl/base/attributes.h"
|
||||
#include "absl/base/config.h"
|
||||
#include "absl/base/internal/per_thread_tls.h"
|
||||
#include "absl/base/internal/raw_logging.h"
|
||||
#include "absl/base/macros.h"
|
||||
#include "absl/base/no_destructor.h"
|
||||
#include "absl/base/optimization.h"
|
||||
#include "absl/debugging/stacktrace.h"
|
||||
#include "absl/memory/memory.h"
|
||||
#include "absl/profiling/internal/exponential_biased.h"
|
||||
@@ -64,7 +70,7 @@ ABSL_PER_THREAD_TLS_KEYWORD SamplingState global_next_sample = {0, 0};
|
||||
#endif // defined(ABSL_INTERNAL_HASHTABLEZ_SAMPLE)
|
||||
|
||||
HashtablezSampler& GlobalHashtablezSampler() {
|
||||
static auto* sampler = new HashtablezSampler();
|
||||
static absl::NoDestructor<HashtablezSampler> sampler;
|
||||
return *sampler;
|
||||
}
|
||||
|
||||
@@ -72,7 +78,10 @@ HashtablezInfo::HashtablezInfo() = default;
|
||||
HashtablezInfo::~HashtablezInfo() = default;
|
||||
|
||||
void HashtablezInfo::PrepareForSampling(int64_t stride,
|
||||
size_t inline_element_size_value) {
|
||||
size_t inline_element_size_value,
|
||||
size_t key_size_value,
|
||||
size_t value_size_value,
|
||||
uint16_t soo_capacity_value) {
|
||||
capacity.store(0, std::memory_order_relaxed);
|
||||
size.store(0, std::memory_order_relaxed);
|
||||
num_erases.store(0, std::memory_order_relaxed);
|
||||
@@ -92,6 +101,9 @@ void HashtablezInfo::PrepareForSampling(int64_t stride,
|
||||
depth = absl::GetStackTrace(stack, HashtablezInfo::kMaxStackDepth,
|
||||
/* skip_count= */ 0);
|
||||
inline_element_size = inline_element_size_value;
|
||||
key_size = key_size_value;
|
||||
value_size = value_size_value;
|
||||
soo_capacity = soo_capacity_value;
|
||||
}
|
||||
|
||||
static bool ShouldForceSampling() {
|
||||
@@ -115,12 +127,13 @@ static bool ShouldForceSampling() {
|
||||
}
|
||||
|
||||
HashtablezInfo* SampleSlow(SamplingState& next_sample,
|
||||
size_t inline_element_size) {
|
||||
size_t inline_element_size, size_t key_size,
|
||||
size_t value_size, uint16_t soo_capacity) {
|
||||
if (ABSL_PREDICT_FALSE(ShouldForceSampling())) {
|
||||
next_sample.next_sample = 1;
|
||||
const int64_t old_stride = exchange(next_sample.sample_stride, 1);
|
||||
HashtablezInfo* result =
|
||||
GlobalHashtablezSampler().Register(old_stride, inline_element_size);
|
||||
HashtablezInfo* result = GlobalHashtablezSampler().Register(
|
||||
old_stride, inline_element_size, key_size, value_size, soo_capacity);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -150,10 +163,12 @@ HashtablezInfo* SampleSlow(SamplingState& next_sample,
|
||||
// that case.
|
||||
if (first) {
|
||||
if (ABSL_PREDICT_TRUE(--next_sample.next_sample > 0)) return nullptr;
|
||||
return SampleSlow(next_sample, inline_element_size);
|
||||
return SampleSlow(next_sample, inline_element_size, key_size, value_size,
|
||||
soo_capacity);
|
||||
}
|
||||
|
||||
return GlobalHashtablezSampler().Register(old_stride, inline_element_size);
|
||||
return GlobalHashtablezSampler().Register(old_stride, inline_element_size,
|
||||
key_size, value_size, soo_capacity);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user