@@ -98,7 +98,7 @@ extern PGDLLIMPORT int32 *LocalRefCount;
98
98
#define BUFFER_LOCK_EXCLUSIVE 2
99
99
100
100
/*
101
- * These routines are beaten on quite heavily, hence the macroization .
101
+ * These routines are beaten on quite heavily, hence inline .
102
102
*/
103
103
104
104
/*
@@ -120,11 +120,14 @@ extern PGDLLIMPORT int32 *LocalRefCount;
120
120
* even in non-assert-enabled builds can be significant. Thus, we've
121
121
* now demoted the range checks to assertions within the macro itself.
122
122
*/
123
- #define BufferIsValid (bufnum ) \
124
- ( \
125
- AssertMacro((bufnum) <= NBuffers && (bufnum) >= -NLocBuffer), \
126
- (bufnum) != InvalidBuffer \
127
- )
123
+ static inline bool
124
+ BufferIsValid (Buffer bufnum )
125
+ {
126
+ Assert (bufnum <= NBuffers );
127
+ Assert (bufnum >= - NLocBuffer );
128
+
129
+ return bufnum != InvalidBuffer ;
130
+ }
128
131
129
132
/*
130
133
* BufferGetBlock
@@ -133,14 +136,16 @@ extern PGDLLIMPORT int32 *LocalRefCount;
133
136
* Note:
134
137
* Assumes buffer is valid.
135
138
*/
136
- #define BufferGetBlock (buffer ) \
137
- ( \
138
- AssertMacro(BufferIsValid(buffer)), \
139
- BufferIsLocal(buffer) ? \
140
- LocalBufferBlockPointers[-(buffer) - 1] \
141
- : \
142
- (Block) (BufferBlocks + ((Size) ((buffer) - 1)) * BLCKSZ) \
143
- )
139
+ static inline Block
140
+ BufferGetBlock (Buffer buffer )
141
+ {
142
+ Assert (BufferIsValid (buffer ));
143
+
144
+ if (BufferIsLocal (buffer ))
145
+ return LocalBufferBlockPointers [- buffer - 1 ];
146
+ else
147
+ return (Block ) (BufferBlocks + ((Size ) (buffer - 1 )) * BLCKSZ );
148
+ }
144
149
145
150
/*
146
151
* BufferGetPageSize
@@ -153,11 +158,12 @@ extern PGDLLIMPORT int32 *LocalRefCount;
153
158
* (formatted) disk page.
154
159
*/
155
160
/* XXX should dig out of buffer descriptor */
156
- #define BufferGetPageSize (buffer ) \
157
- ( \
158
- AssertMacro(BufferIsValid(buffer)), \
159
- (Size)BLCKSZ \
160
- )
161
+ static inline Size
162
+ BufferGetPageSize (Buffer buffer )
163
+ {
164
+ AssertMacro (BufferIsValid (buffer ));
165
+ return (Size ) BLCKSZ ;
166
+ }
161
167
162
168
/*
163
169
* BufferGetPage
@@ -166,7 +172,11 @@ extern PGDLLIMPORT int32 *LocalRefCount;
166
172
* When this is called as part of a scan, there may be a need for a nearby
167
173
* call to TestForOldSnapshot(). See the definition of that for details.
168
174
*/
169
- #define BufferGetPage (buffer ) ((Page)BufferGetBlock(buffer))
175
+ static inline Page
176
+ BufferGetPage (Buffer buffer )
177
+ {
178
+ return (Page ) BufferGetBlock (buffer );
179
+ }
170
180
171
181
/*
172
182
* prototypes for functions in bufmgr.c
@@ -201,6 +211,12 @@ extern void CheckPointBuffers(int flags);
201
211
extern BlockNumber BufferGetBlockNumber (Buffer buffer );
202
212
extern BlockNumber RelationGetNumberOfBlocksInFork (Relation relation ,
203
213
ForkNumber forkNum );
214
+ static inline BlockNumber
215
+ RelationGetNumberOfBlocks (Relation reln )
216
+ {
217
+ return RelationGetNumberOfBlocksInFork (reln , MAIN_FORKNUM );
218
+ }
219
+
204
220
extern void FlushOneBuffer (Buffer buffer );
205
221
extern void FlushRelationBuffers (Relation rel );
206
222
extern void FlushRelationsAllBuffers (struct SMgrRelationData * * smgrs , int nrels );
@@ -215,9 +231,6 @@ extern void DropRelationsAllBuffers(struct SMgrRelationData **smgr_reln,
215
231
int nlocators );
216
232
extern void DropDatabaseBuffers (Oid dbid );
217
233
218
- #define RelationGetNumberOfBlocks (reln ) \
219
- RelationGetNumberOfBlocksInFork(reln, MAIN_FORKNUM)
220
-
221
234
extern bool BufferIsPermanent (Buffer buffer );
222
235
extern XLogRecPtr BufferGetLSNAtomic (Buffer buffer );
223
236
0 commit comments