upb: tag upb_Array.data as UPB_ONLYBITS()
PiperOrigin-RevId: 597019522
diff --git a/upb/message/internal/array.h b/upb/message/internal/array.h
index 96152f0..ef5c413 100644
--- a/upb/message/internal/array.h
+++ b/upb/message/internal/array.h
@@ -8,6 +8,7 @@
#ifndef UPB_MESSAGE_INTERNAL_ARRAY_H_
#define UPB_MESSAGE_INTERNAL_ARRAY_H_
+#include <stdint.h>
#include <string.h>
#include "upb/mem/arena.h"
@@ -33,7 +34,7 @@
// 3 maps to elem size 16
//
// Bit #2 contains the frozen/immutable flag (currently unimplemented).
- uintptr_t data;
+ uintptr_t UPB_ONLYBITS(data);
size_t UPB_ONLYBITS(size); // The number of elements in the array.
size_t UPB_PRIVATE(capacity); // Allocated storage. Measured in elements.
@@ -44,19 +45,19 @@
UPB_ASSERT(lg2 != 1);
UPB_ASSERT(lg2 <= 4);
const size_t bits = lg2 - (lg2 != 0);
- array->data = (uintptr_t)data | bits;
+ array->UPB_ONLYBITS(data) = (uintptr_t)data | bits;
}
UPB_INLINE size_t
UPB_PRIVATE(_upb_Array_ElemSizeLg2)(const struct upb_Array* array) {
- const size_t bits = array->data & _UPB_ARRAY_MASK_LG2;
+ const size_t bits = array->UPB_ONLYBITS(data) & _UPB_ARRAY_MASK_LG2;
const size_t lg2 = bits + (bits != 0);
return lg2;
}
UPB_INLINE const void* _upb_array_constptr(const struct upb_Array* array) {
UPB_PRIVATE(_upb_Array_ElemSizeLg2)(array); // Check assertions.
- return (void*)(array->data & ~(uintptr_t)_UPB_ARRAY_MASK_ALL);
+ return (void*)(array->UPB_ONLYBITS(data) & ~(uintptr_t)_UPB_ARRAY_MASK_ALL);
}
UPB_INLINE void* _upb_array_ptr(struct upb_Array* array) {