diff --git a/php/ext/google/protobuf/php-upb.c b/php/ext/google/protobuf/php-upb.c index ffa3075f12aaa..ebbe8c679e2e7 100644 --- a/php/ext/google/protobuf/php-upb.c +++ b/php/ext/google/protobuf/php-upb.c @@ -4571,9 +4571,10 @@ static upb_ArenaRoot _upb_Arena_FindRoot(upb_Arena* a) { return (upb_ArenaRoot){.root = ai, .tagged_count = poc}; } -size_t upb_Arena_SpaceAllocated(upb_Arena* arena) { +size_t upb_Arena_SpaceAllocated(upb_Arena* arena, size_t* fused_count) { upb_ArenaInternal* ai = _upb_Arena_FindRoot(arena).root; size_t memsize = 0; + size_t local_fused_count = 0; while (ai != NULL) { upb_MemBlock* block = upb_Atomic_Load(&ai->blocks, memory_order_relaxed); @@ -4582,8 +4583,10 @@ size_t upb_Arena_SpaceAllocated(upb_Arena* arena) { block = upb_Atomic_Load(&block->next, memory_order_relaxed); } ai = upb_Atomic_Load(&ai->next, memory_order_relaxed); + local_fused_count++; } + if (fused_count) *fused_count = local_fused_count; return memsize; } diff --git a/php/ext/google/protobuf/php-upb.h b/php/ext/google/protobuf/php-upb.h index 743a461e41447..70638f3bd68d4 100644 --- a/php/ext/google/protobuf/php-upb.h +++ b/php/ext/google/protobuf/php-upb.h @@ -347,7 +347,7 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size); // Must be last. -#define _kUpb_Status_MaxMessage 127 +#define _kUpb_Status_MaxMessage 511 typedef struct { bool ok; @@ -778,7 +778,7 @@ UPB_API bool upb_Arena_Fuse(upb_Arena* a, upb_Arena* b); bool upb_Arena_IncRefFor(upb_Arena* a, const void* owner); void upb_Arena_DecRefFor(upb_Arena* a, const void* owner); -size_t upb_Arena_SpaceAllocated(upb_Arena* a); +size_t upb_Arena_SpaceAllocated(upb_Arena* a, size_t* fused_count); uint32_t upb_Arena_DebugRefCount(upb_Arena* a); UPB_API_INLINE upb_Arena* upb_Arena_New(void) { diff --git a/ruby/ext/google/protobuf_c/ruby-upb.c b/ruby/ext/google/protobuf_c/ruby-upb.c index 0fbb88d98c87a..4900b324c5ff0 100644 --- a/ruby/ext/google/protobuf_c/ruby-upb.c +++ b/ruby/ext/google/protobuf_c/ruby-upb.c @@ -4085,9 +4085,10 @@ static upb_ArenaRoot _upb_Arena_FindRoot(upb_Arena* a) { return (upb_ArenaRoot){.root = ai, .tagged_count = poc}; } -size_t upb_Arena_SpaceAllocated(upb_Arena* arena) { +size_t upb_Arena_SpaceAllocated(upb_Arena* arena, size_t* fused_count) { upb_ArenaInternal* ai = _upb_Arena_FindRoot(arena).root; size_t memsize = 0; + size_t local_fused_count = 0; while (ai != NULL) { upb_MemBlock* block = upb_Atomic_Load(&ai->blocks, memory_order_relaxed); @@ -4096,8 +4097,10 @@ size_t upb_Arena_SpaceAllocated(upb_Arena* arena) { block = upb_Atomic_Load(&block->next, memory_order_relaxed); } ai = upb_Atomic_Load(&ai->next, memory_order_relaxed); + local_fused_count++; } + if (fused_count) *fused_count = local_fused_count; return memsize; } diff --git a/ruby/ext/google/protobuf_c/ruby-upb.h b/ruby/ext/google/protobuf_c/ruby-upb.h index a784587e3494b..ea5cda26e6251 100755 --- a/ruby/ext/google/protobuf_c/ruby-upb.h +++ b/ruby/ext/google/protobuf_c/ruby-upb.h @@ -349,7 +349,7 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size); // Must be last. -#define _kUpb_Status_MaxMessage 127 +#define _kUpb_Status_MaxMessage 511 typedef struct { bool ok; @@ -780,7 +780,7 @@ UPB_API bool upb_Arena_Fuse(upb_Arena* a, upb_Arena* b); bool upb_Arena_IncRefFor(upb_Arena* a, const void* owner); void upb_Arena_DecRefFor(upb_Arena* a, const void* owner); -size_t upb_Arena_SpaceAllocated(upb_Arena* a); +size_t upb_Arena_SpaceAllocated(upb_Arena* a, size_t* fused_count); uint32_t upb_Arena_DebugRefCount(upb_Arena* a); UPB_API_INLINE upb_Arena* upb_Arena_New(void) {