Nguyễn Thái Ngọc Duy <[email protected]> writes:
> Previous patches leave lots of holes and padding in this struct. This
> patch reorders the members and shrinks the struct down to 80 bytes
> (from 136 bytes, before any field shrinking is done) with 16 bits to
> spare (and a couple more in in_pack_header_size when we really run out
> of bits).
Nice.
I am wondering if we need some conditional code for 32-bit platform.
For example, you have uint32_t field and do things like this:
static inline int oe_size_less_than(const struct object_entry *e,
unsigned long limit)
{
if (e->size_valid)
return e->size_ < limit;
if (limit > maximum_unsigned_value_of_type(uint32_t))
return 1;
return oe_size(e) < limit;
}
Do we and compilers do the right thing when your ulong is uint32_t?