diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index 29f10e59568792dc8ceea6886298c1dad4f14f67..f402e0dd4b4b5621a0c848c28534a55059e38e7c 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -4295,7 +4295,7 @@ IssuePendingWritebacks(WritebackContext *context)
  * For best performance, keep the tests that are fastest and/or most likely to
  * exclude a page from old snapshot testing near the front.
  */
-extern Page
+extern void
 TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page)
 {
 	Assert(relation != NULL);
@@ -4311,6 +4311,4 @@ TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page)
 		ereport(ERROR,
 				(errcode(ERRCODE_SNAPSHOT_TOO_OLD),
 				 errmsg("snapshot too old")));
-
-	return page;
 }
diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h
index 6fea1bc13dcb93520e3b6c812cf10b378cdd9b72..afd8a847efdb7dbd303fc78e18450fa4323c8923 100644
--- a/src/include/storage/bufmgr.h
+++ b/src/include/storage/bufmgr.h
@@ -177,31 +177,6 @@ extern PGDLLIMPORT int32 *LocalRefCount;
 	(Size)BLCKSZ \
 )
 
-/*
- * BufferGetPage
- *		Returns the page associated with a buffer.
- *
- * agetest will normally be a literal, so use a macro at the outer level to
- * give the compiler a chance to optimize away the runtime code to check it.
- *
- * TestForOldSnapshot(), if it doesn't throw an error, will return the page
- * argument it is passed, so the same result will go back to this macro's
- * caller for either agetest value; it is a matter of whether to call the
- * function to perform the test.  For call sites where the check is not needed
- * (which is the vast majority of them), the snapshot and relation parameters
- * can, and generally should, be NULL.
- */
-#define BufferGetPage(buffer, snapshot, relation, agetest) \
-( \
-	( \
-		AssertMacro((agetest) == BGP_NO_SNAPSHOT_TEST || (agetest) == BGP_TEST_FOR_OLD_SNAPSHOT), \
-		((agetest) == BGP_NO_SNAPSHOT_TEST) \
-	) ? \
-		((Page)BufferGetBlock(buffer)) \
-	: \
-		(TestForOldSnapshot(snapshot, relation, (Page)BufferGetBlock(buffer))) \
-)
-
 /*
  * prototypes for functions in bufmgr.c
  */
@@ -268,10 +243,33 @@ extern bool BgBufferSync(struct WritebackContext *wb_context);
 
 extern void AtProcExit_LocalBuffers(void);
 
-extern Page TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page);
+extern void TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page);
 
 /* in freelist.c */
 extern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype);
 extern void FreeAccessStrategy(BufferAccessStrategy strategy);
 
+
+/* inline functions */
+
+/*
+ * BufferGetPage
+ *		Returns the page associated with a buffer.
+ *
+ * For call sites where the check is not needed (which is the vast majority of
+ * them), the snapshot and relation parameters can, and generally should, be
+ * NULL.
+ */
+static inline Page
+BufferGetPage(Buffer buffer, Snapshot snapshot, Relation relation,
+			  BufferGetPageAgeTest agetest)
+{
+	Page		page = (Page) BufferGetBlock(buffer);
+
+	if (agetest == BGP_TEST_FOR_OLD_SNAPSHOT)
+		TestForOldSnapshot(snapshot, relation, page);
+
+	return page;
+}
+
 #endif