diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index caacc105d25c92118a3d6143f2b98914a3644e7e..208457584d975fe5d0697316ed4ec8397c19e85e 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -7479,10 +7479,11 @@ heap_xlog_visible(XLogReaderState *record)
 	{
 		/*
 		 * We don't bump the LSN of the heap page when setting the visibility
-		 * map bit (unless checksums are enabled, in which case we must),
-		 * because that would generate an unworkable volume of full-page
-		 * writes.  This exposes us to torn page hazards, but since we're not
-		 * inspecting the existing page contents in any way, we don't care.
+		 * map bit (unless checksums or wal_hint_bits is enabled, in which
+		 * case we must), because that would generate an unworkable volume of
+		 * full-page writes.  This exposes us to torn page hazards, but since
+		 * we're not inspecting the existing page contents in any way, we
+		 * don't care.
 		 *
 		 * However, all operations that clear the visibility map bit *do* bump
 		 * the LSN, and those operations will only be replayed if the XLOG LSN
@@ -7497,10 +7498,10 @@ heap_xlog_visible(XLogReaderState *record)
 	else if (action == BLK_RESTORED)
 	{
 		/*
-		 * If heap block was backed up, restore it. This can only happen with
-		 * checksums enabled.
+		 * If heap block was backed up, we already restored it and there's
+		 * nothing more to do. (This can only happen with checksums or
+		 * wal_log_hints enabled.)
 		 */
-		Assert(DataChecksumsEnabled());
 	}
 	if (BufferIsValid(buffer))
 		UnlockReleaseBuffer(buffer);
diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c
index cc973b53a91b7ac34b40c9a5ba5313ec7ddd1da3..e4b25587e98ab0620a15abab0de49957e8743624 100644
--- a/src/backend/storage/buffer/bufmgr.c
+++ b/src/backend/storage/buffer/bufmgr.c
@@ -2496,7 +2496,7 @@ BufferGetLSNAtomic(Buffer buffer)
 	/*
 	 * If we don't need locking for correctness, fastpath out.
 	 */
-	if (!DataChecksumsEnabled() || BufferIsLocal(buffer))
+	if (!XLogHintBitIsNeeded() || BufferIsLocal(buffer))
 		return PageGetLSN(page);
 
 	/* Make sure we've got a real buffer, and that we hold a pin on it. */