Auto-generate files after cl/571462941
diff --git a/ruby/ext/google/protobuf_c/ruby-upb.c b/ruby/ext/google/protobuf_c/ruby-upb.c index fe878c1..730e58d 100644 --- a/ruby/ext/google/protobuf_c/ruby-upb.c +++ b/ruby/ext/google/protobuf_c/ruby-upb.c
@@ -5318,6 +5318,26 @@ } } +void upb_Arena_IncRefFor(upb_Arena* arena, const void* owner) { + _upb_ArenaRoot r; +retry: + r = _upb_Arena_FindRoot(arena); + if (upb_Atomic_CompareExchangeWeak( + &r.root->parent_or_count, &r.tagged_count, + _upb_Arena_TaggedFromRefcount( + _upb_Arena_RefCountFromTagged(r.tagged_count) + 1), + memory_order_release, memory_order_acquire)) { + // We incremented it successfully, so we are done. + return; + } + // We failed update due to parent switching on the arena. + goto retry; +} + +void upb_Arena_DecRefFor(upb_Arena* arena, const void* owner) { + upb_Arena_Free(arena); +} + // Must be last.
diff --git a/ruby/ext/google/protobuf_c/ruby-upb.h b/ruby/ext/google/protobuf_c/ruby-upb.h index 2e5dcec..c2b5f65 100755 --- a/ruby/ext/google/protobuf_c/ruby-upb.h +++ b/ruby/ext/google/protobuf_c/ruby-upb.h
@@ -563,6 +563,9 @@ UPB_API void upb_Arena_Free(upb_Arena* a); UPB_API bool upb_Arena_Fuse(upb_Arena* a, upb_Arena* b); +void upb_Arena_IncRefFor(upb_Arena* arena, const void* owner); +void upb_Arena_DecRefFor(upb_Arena* arena, const void* owner); + void* _upb_Arena_SlowMalloc(upb_Arena* a, size_t size); size_t upb_Arena_SpaceAllocated(upb_Arena* arena); uint32_t upb_Arena_DebugRefCount(upb_Arena* arena);