upb: tag upb_Array.size as UPB_ONLYBITS()

PiperOrigin-RevId: 592035282
diff --git a/upb/message/internal/array.h b/upb/message/internal/array.h
index 68aedf3..4d03e4b 100644
--- a/upb/message/internal/array.h
+++ b/upb/message/internal/array.h
@@ -35,7 +35,7 @@
   // Bit #2 contains the frozen/immutable flag (currently unimplemented).
   uintptr_t data;
 
-  size_t size;                   // The number of elements in the array.
+  size_t UPB_ONLYBITS(size);     // The number of elements in the array.
   size_t UPB_PRIVATE(capacity);  // Allocated storage. Measured in elements.
 };
 
@@ -73,7 +73,7 @@
   if (!array) return NULL;
   UPB_PRIVATE(_upb_Array_SetTaggedPtr)
   (array, UPB_PTR_AT(array, array_size, void), elem_size_lg2);
-  array->size = 0;
+  array->UPB_ONLYBITS(size) = 0;
   array->UPB_PRIVATE(capacity) = init_capacity;
   return array;
 }
@@ -92,9 +92,10 @@
 // Resize without initializing new elements.
 UPB_INLINE bool _upb_Array_ResizeUninitialized(upb_Array* array, size_t size,
                                                upb_Arena* arena) {
-  UPB_ASSERT(size <= array->size || arena);  // Allow NULL arena when shrinking.
+  UPB_ASSERT(size <= array->UPB_ONLYBITS(size) ||
+             arena);  // Allow NULL arena when shrinking.
   if (!UPB_PRIVATE(_upb_Array_Reserve)(array, size, arena)) return false;
-  array->size = size;
+  array->UPB_ONLYBITS(size) = size;
   return true;
 }
 
@@ -104,7 +105,7 @@
 UPB_INLINE void UPB_PRIVATE(_upb_Array_Set)(upb_Array* array, size_t i,
                                             const void* data,
                                             size_t elem_size) {
-  UPB_ASSERT(i < array->size);
+  UPB_ASSERT(i < array->UPB_ONLYBITS(size));
   UPB_ASSERT(elem_size == 1U << UPB_PRIVATE(_upb_Array_ElemSizeLg2)(array));
   char* arr_data = (char*)_upb_array_ptr(array);
   memcpy(arr_data + (i * elem_size), data, elem_size);