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);