8#ifndef UPB_MEM_INTERNAL_ARENA_H_
9#define UPB_MEM_INTERNAL_ARENA_H_
25#define UPB_ARENA_SIZE_HACK (10 + (UPB_XSAN_STRUCT_SIZE * 2))
47 return (
size_t)(a->UPB_ONLYBITS(end) - a->UPB_ONLYBITS(
ptr));
58 a->UPB_ONLYBITS(
ptr));
76 void* ret = a->UPB_ONLYBITS(
ptr);
77 a->UPB_ONLYBITS(
ptr) += span;
85 size_t oldsize,
size_t size) {
99 bool _upb_Arena_WasLastAlloc(
struct upb_Arena * a,
void*
ptr,
107 size_t oldsize,
size_t size) {
116 a->UPB_ONLYBITS(
ptr) += extend;
125 size_t oldsize,
size_t size) {
132 if (size <= oldsize &&
140 if (ret && oldsize > 0) {
UPB_API_INLINE void upb_Arena_ShrinkLast(upb_Arena *a, void *ptr, size_t oldsize, size_t size)
Definition arena.h:84
UPB_API_INLINE void * upb_Arena_Realloc(upb_Arena *a, void *ptr, size_t oldsize, size_t size)
Definition arena.h:124
UPB_API_INLINE bool upb_Arena_TryExtend(upb_Arena *a, void *ptr, size_t oldsize, size_t size)
Definition arena.h:106
UPB_API_INLINE void * upb_Arena_Malloc(struct upb_Arena *a, size_t size)
Definition arena.h:65
#define UPB_UNLIKELY(x)
Definition def.inc:265
#define UPB_API_INLINE
Definition def.inc:163
#define UPB_XSAN_MEMBER
Definition def.inc:200
#define UPB_ASSERT(expr)
Definition def.inc:329
#define UPB_PRIVATE(x)
Definition def.inc:393
#define UPB_ALIGN_MALLOC(size)
Definition def.inc:207
#define UPB_MALLOC_ALIGN
Definition def.inc:184
#define UPB_NODEREF
Definition def.inc:297
#define UPB_INLINE
Definition def.inc:144
#define UPB_XSAN(st)
Definition def.inc:201
#define UPB_MIN(x, y)
Definition def.inc:301
void UPB_PRIVATE _upb_Arena_SwapOut(struct upb_Arena *des, const struct upb_Arena *src)
UPB_INLINE size_t UPB_PRIVATE _upb_ArenaHas(const struct upb_Arena *a)
Definition arena.h:46
UPB_INLINE size_t UPB_PRIVATE _upb_Arena_AllocSpan(size_t size)
Definition arena.h:50
UPB_INLINE bool UPB_PRIVATE _upb_Arena_WasLastAllocFromCurrentBlock(const struct upb_Arena *a, void *ptr, size_t size)
Definition arena.h:54
void UPB_PRIVATE _upb_Arena_SwapIn(struct upb_Arena *des, const struct upb_Arena *src)
UPB_INLINE bool UPB_PRIVATE _upb_Arena_IsAligned(const void *ptr)
Definition arena.h:61
UPB_INLINE void UPB_PRIVATE upb_Xsan_PoisonRegion(const void *addr, size_t size)
Definition sanitizers.h:68
UPB_INLINE bool UPB_PRIVATE upb_Xsan_PtrEq(const void *a, const void *b)
Definition sanitizers.h:135
UPB_INLINE void *UPB_PRIVATE upb_Xsan_NewUnpoisonedRegion(upb_Xsan *xsan, void *addr, size_t size)
Definition sanitizers.h:112
UPB_INLINE void *UPB_PRIVATE upb_Xsan_ResizeUnpoisonedRegion(void *tagged_addr, size_t old_size, size_t new_size)
Definition sanitizers.h:125
UPB_INLINE void UPB_PRIVATE upb_Xsan_AccessReadWrite(upb_Xsan *xsan)
Definition sanitizers.h:155
const UPB_NODEREF char * UPB_ONLYBITS(end)