From 8091b0a848e1debfa8291f5dc3e5b0d9a98b7b61 Mon Sep 17 00:00:00 2001
From: Petr Shumilov
Date: Mon, 27 Apr 2026 17:50:58 +0300
Subject: [PATCH] Disable defragmentation for extra memory pools
Signed-off-by: Petr Shumilov
---
.../memory-resource/unsynchronized_pool_resource.cpp | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/runtime-common/core/memory-resource/unsynchronized_pool_resource.cpp b/runtime-common/core/memory-resource/unsynchronized_pool_resource.cpp
index bd7a3c446b..9efce5dcfb 100644
--- a/runtime-common/core/memory-resource/unsynchronized_pool_resource.cpp
+++ b/runtime-common/core/memory-resource/unsynchronized_pool_resource.cpp
@@ -4,8 +4,10 @@
#include "runtime-common/core/memory-resource/unsynchronized_pool_resource.h"
-#include "common/wrappers/likely.h"
+#include
+#include
+#include "common/wrappers/likely.h"
#include "runtime-common/core/memory-resource/details/memory_ordered_chunk_list.h"
namespace memory_resource {
@@ -37,7 +39,10 @@ void unsynchronized_pool_resource::perform_defragmentation() noexcept {
details::memory_ordered_chunk_list mem_list{memory_begin_, memory_end_};
huge_pieces_.flush_to(mem_list);
- if (const auto fallback_resource_left_size = fallback_resource_.size(); fallback_resource_left_size > 0) {
+ if (const auto fallback_resource_left_size{fallback_resource_.size()};
+ fallback_resource_left_size > 0 &&
+ !is_memory_from_extra_pool(fallback_resource_.memory_begin(), std::distance(reinterpret_cast(fallback_resource_.memory_begin()),
+ reinterpret_cast(fallback_resource_.memory_current())))) {
mem_list.add_memory(fallback_resource_.memory_current(), fallback_resource_left_size);
fallback_resource_.init(nullptr, 0);
}