diff --git a/src/core/BUILD b/src/core/BUILD index 6b90243d253..68efe9d4737 100644 --- a/src/core/BUILD +++ b/src/core/BUILD @@ -1124,6 +1124,10 @@ grpc_cc_library( hdrs = [ "lib/resource_quota/arena.h", ], + external_deps = [ + "absl/meta:type_traits", + "absl/utility", + ], visibility = [ "@grpc:alt_grpc_base_legacy", ], diff --git a/src/core/lib/resource_quota/arena.cc b/src/core/lib/resource_quota/arena.cc index 332bdc4c85c..d37ef426490 100644 --- a/src/core/lib/resource_quota/arena.cc +++ b/src/core/lib/resource_quota/arena.cc @@ -121,7 +121,6 @@ void Arena::ManagedNewObject::Link(std::atomic* head) { } } -#ifndef GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC void* Arena::AllocPooled(size_t obj_size, size_t alloc_size, std::atomic* head) { // ABA mitigation: @@ -178,6 +177,5 @@ void Arena::FreePooled(void* p, std::atomic* head) { node->next, node, std::memory_order_acq_rel, std::memory_order_relaxed)) { } } -#endif } // namespace grpc_core diff --git a/src/core/lib/resource_quota/arena.h b/src/core/lib/resource_quota/arena.h index 9a072458ea0..1dcb530243e 100644 --- a/src/core/lib/resource_quota/arena.h +++ b/src/core/lib/resource_quota/arena.h @@ -30,10 +30,14 @@ #include #include -#include +#include #include +#include #include +#include "absl/meta/type_traits.h" +#include "absl/utility/utility.h" + #include #include "src/core/lib/gpr/alloc.h" @@ -41,14 +45,13 @@ #include "src/core/lib/promise/context.h" #include "src/core/lib/resource_quota/memory_quota.h" -#define GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC +// #define GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC // #define GRPC_ARENA_TRACE_POOLED_ALLOCATIONS namespace grpc_core { namespace arena_detail { -#ifndef GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC struct PoolAndSize { size_t alloc_size; size_t pool_index; @@ -110,19 +113,16 @@ PoolAndSize ChoosePoolForAllocationSize( size_t n, absl::integer_sequence) { return ChoosePoolForAllocationSizeImpl<0, kBucketSizes...>::Fn(n); } -#endif } // namespace arena_detail class Arena { -#ifndef GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC // Selected pool sizes. // How to tune: see tools/codegen/core/optimize_arena_pool_sizes.py using PoolSizes = absl::integer_sequence; struct FreePoolNode { FreePoolNode* next; }; -#endif public: // Create an arena, with \a initial_size bytes in the first allocated buffer. @@ -372,11 +372,9 @@ class Arena { void* AllocZone(size_t size); -#ifndef GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC void* AllocPooled(size_t obj_size, size_t alloc_size, std::atomic* head); static void FreePooled(void* p, std::atomic* head); -#endif void TracePoolAlloc(size_t size, void* ptr) { (void)size; diff --git a/src/core/lib/security/transport/client_auth_filter.cc b/src/core/lib/security/transport/client_auth_filter.cc index 57d10f9a0b7..8094ff429a5 100644 --- a/src/core/lib/security/transport/client_auth_filter.cc +++ b/src/core/lib/security/transport/client_auth_filter.cc @@ -196,13 +196,10 @@ ArenaPromise ClientAuthFilter::MakeCallPromise( if (host == nullptr) { return next_promise_factory(std::move(call_args)); } - return TrySeq( - args_.security_connector->CheckCallHost(host->as_string_view(), - args_.auth_context.get()), - [this, call_args = std::move(call_args)]() mutable { - return GetCallCredsMetadata(std::move(call_args)); - }, - next_promise_factory); + return TrySeq(args_.security_connector->CheckCallHost( + host->as_string_view(), args_.auth_context.get()), + GetCallCredsMetadata(std::move(call_args)), + next_promise_factory); } absl::StatusOr ClientAuthFilter::Create( diff --git a/test/core/resource_quota/arena_test.cc b/test/core/resource_quota/arena_test.cc index 1e35a105f6b..665364305f3 100644 --- a/test/core/resource_quota/arena_test.cc +++ b/test/core/resource_quota/arena_test.cc @@ -191,7 +191,6 @@ bool IsScribbled(Int* ints, int n, int offset) { return true; } -#ifndef GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC TEST_F(ArenaTest, PooledObjectsArePooled) { struct TestObj { char a[100]; @@ -209,7 +208,6 @@ TEST_F(ArenaTest, PooledObjectsArePooled) { Scribble(obj->a, 100, 2); EXPECT_TRUE(IsScribbled(obj->a, 100, 2)); } -#endif TEST_F(ArenaTest, CreateManyObjects) { struct TestObj { @@ -240,11 +238,7 @@ TEST_F(ArenaTest, CreateManyObjectsWithDestructors) { TEST_F(ArenaTest, CreatePoolArray) { auto arena = MakeScopedArena(1024, &memory_allocator_); auto p = arena->MakePooledArray(1024); -#ifndef GRPC_ARENA_POOLED_ALLOCATIONS_USE_MALLOC EXPECT_FALSE(p.get_deleter().has_freelist()); -#else - EXPECT_TRUE(p.get_deleter().has_freelist()); -#endif p = arena->MakePooledArray(5); EXPECT_TRUE(p.get_deleter().has_freelist()); Scribble(p.get(), 5, 1);