Convert macros to static inline functions (bufmgr.h)
authorPeter Eisentraut <peter@eisentraut.org>
Wed, 13 Jul 2022 12:33:03 +0000 (14:33 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Wed, 13 Jul 2022 12:47:40 +0000 (14:47 +0200)
Reviewed-by: Amul Sul <sulamul@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/5b558da8-99fb-0a99-83dd-f72f05388517%40enterprisedb.com

src/include/storage/bufmgr.h

index d7ced19c142b27c01b89dea3b2ef231a01bf0a43..f7fc60815a651a3b725db695ded26eeaea35cfc5 100644 (file)
@@ -98,7 +98,7 @@ extern PGDLLIMPORT int32 *LocalRefCount;
 #define BUFFER_LOCK_EXCLUSIVE  2
 
 /*
- * These routines are beaten on quite heavily, hence the macroization.
+ * These routines are beaten on quite heavily, hence inline.
  */
 
 /*
@@ -120,11 +120,14 @@ extern PGDLLIMPORT int32 *LocalRefCount;
  * even in non-assert-enabled builds can be significant.  Thus, we've
  * now demoted the range checks to assertions within the macro itself.
  */
-#define BufferIsValid(bufnum) \
-( \
-   AssertMacro((bufnum) <= NBuffers && (bufnum) >= -NLocBuffer), \
-   (bufnum) != InvalidBuffer  \
-)
+static inline bool
+BufferIsValid(Buffer bufnum)
+{
+   Assert(bufnum <= NBuffers);
+   Assert(bufnum >= -NLocBuffer);
+
+   return bufnum != InvalidBuffer;
+}
 
 /*
  * BufferGetBlock
@@ -133,14 +136,16 @@ extern PGDLLIMPORT int32 *LocalRefCount;
  * Note:
  *     Assumes buffer is valid.
  */
-#define BufferGetBlock(buffer) \
-( \
-   AssertMacro(BufferIsValid(buffer)), \
-   BufferIsLocal(buffer) ? \
-       LocalBufferBlockPointers[-(buffer) - 1] \
-   : \
-       (Block) (BufferBlocks + ((Size) ((buffer) - 1)) * BLCKSZ) \
-)
+static inline Block
+BufferGetBlock(Buffer buffer)
+{
+   Assert(BufferIsValid(buffer));
+
+   if (BufferIsLocal(buffer))
+       return LocalBufferBlockPointers[-buffer - 1];
+   else
+       return (Block) (BufferBlocks + ((Size) (buffer - 1)) * BLCKSZ);
+}
 
 /*
  * BufferGetPageSize
@@ -153,11 +158,12 @@ extern PGDLLIMPORT int32 *LocalRefCount;
  *     (formatted) disk page.
  */
 /* XXX should dig out of buffer descriptor */
-#define BufferGetPageSize(buffer) \
-( \
-   AssertMacro(BufferIsValid(buffer)), \
-   (Size)BLCKSZ \
-)
+static inline Size
+BufferGetPageSize(Buffer buffer)
+{
+   AssertMacro(BufferIsValid(buffer));
+   return (Size) BLCKSZ;
+}
 
 /*
  * BufferGetPage
@@ -166,7 +172,11 @@ extern PGDLLIMPORT int32 *LocalRefCount;
  * When this is called as part of a scan, there may be a need for a nearby
  * call to TestForOldSnapshot().  See the definition of that for details.
  */
-#define BufferGetPage(buffer) ((Page)BufferGetBlock(buffer))
+static inline Page
+BufferGetPage(Buffer buffer)
+{
+   return (Page) BufferGetBlock(buffer);
+}
 
 /*
  * prototypes for functions in bufmgr.c
@@ -201,6 +211,12 @@ extern void CheckPointBuffers(int flags);
 extern BlockNumber BufferGetBlockNumber(Buffer buffer);
 extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation,
                                                   ForkNumber forkNum);
+static inline BlockNumber
+RelationGetNumberOfBlocks(Relation reln)
+{
+   return RelationGetNumberOfBlocksInFork(reln, MAIN_FORKNUM);
+}
+
 extern void FlushOneBuffer(Buffer buffer);
 extern void FlushRelationBuffers(Relation rel);
 extern void FlushRelationsAllBuffers(struct SMgrRelationData **smgrs, int nrels);
@@ -215,9 +231,6 @@ extern void DropRelationsAllBuffers(struct SMgrRelationData **smgr_reln,
                                    int nlocators);
 extern void DropDatabaseBuffers(Oid dbid);
 
-#define RelationGetNumberOfBlocks(reln) \
-   RelationGetNumberOfBlocksInFork(reln, MAIN_FORKNUM)
-
 extern bool BufferIsPermanent(Buffer buffer);
 extern XLogRecPtr BufferGetLSNAtomic(Buffer buffer);