Re: Convert macros to static inline functions

Maxim Orlov <orlovmg@gmail.com>

From: Maxim Orlov <orlovmg@gmail.com>
To: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2025-01-31T13:29:15Z
Lists: pgsql-hackers

Attachments

On Thu, 23 Jan 2025 at 14:39, Peter Eisentraut <
peter.eisentraut@enterprisedb.com> wrote:

> On 27.12.24 11:16, Peter Eisentraut wrote:
> > On 16.05.22 10:27, Peter Eisentraut wrote:
> >> Inspired by [0], I looked to convert more macros to inline functions.
> >
> > This is an older thread where I left something unfinished:
> >
> >> Note 2: Many macros in htup_details.h operate both on HeapTupleHeader
> >> and on MinimalTuple, so converting them to a function doesn't work in
> >> a straightforward way.  I have some in-progress work in that area, but
> >> I have not included any of that here.
> >
> > Here is the patch set for this.
>
> I have committed this.
>
Great job! I've been working on the 64 XIDs patch for years, and I've never
liked this place.  On the other hand,
as we know, inlining does not always work since it only suggests to the
compiler to do it.  After all, many of
these calls are used in pretty "hot" places and every instruction is
important, in my opinion.  Wouldn't it be
better to use pg_attribute_always_inline in this particular module?

PFA patch.  I don't use pg_attribute_always_inline for fastgetattr and
heap_getattr because they are relatively
large.  I think it's worth leaving the possibility for debugging here.

-- 
Best regards,
Maxim Orlov.

Commits

  1. Add some const decorations (htup.h)

  2. Convert macros to static inline functions (htup_details.h, itup.h)

  3. Convert macros to static inline functions (rel.h)

  4. Convert macros to static inline functions (itup.h)

  5. Convert macros to static inline functions (tupmacs.h)

  6. Convert macros to static inline functions (xlog_internal.h)

  7. Convert macros to static inline functions (bufmgr.h)

  8. Convert macros to static inline functions (itemptr.h)

  9. Convert macros to static inline functions (bufpage.h)

  10. Convert macros to static inline functions (block.h)