|
81 | 81 | PageIsVerified(Pagepage,BlockNumberblkno) |
82 | 82 | { |
83 | 83 | PageHeaderp= (PageHeader)page; |
84 | | -char*pagebytes; |
| 84 | +size_t*pagebytes; |
85 | 85 | inti; |
86 | 86 | boolchecksum_failure= false; |
87 | 87 | boolheader_sane= false; |
@@ -118,10 +118,17 @@ PageIsVerified(Page page, BlockNumber blkno) |
118 | 118 | return true; |
119 | 119 | } |
120 | 120 |
|
121 | | -/* Check all-zeroes case */ |
| 121 | +/* |
| 122 | + * Check all-zeroes case. Luckily BLCKSZ is guaranteed to always be a |
| 123 | + * multiple of size_t - and it's much faster to compare memory using the |
| 124 | + * native word size. |
| 125 | + */ |
| 126 | +StaticAssertStmt(BLCKSZ== (BLCKSZ /sizeof(size_t))*sizeof(size_t), |
| 127 | +"BLCKSZ has to be a multiple of sizeof(size_t)"); |
| 128 | + |
122 | 129 | all_zeroes= true; |
123 | | -pagebytes= (char*)page; |
124 | | -for (i=0;i<BLCKSZ;i++) |
| 130 | +pagebytes= (size_t*)page; |
| 131 | +for (i=0;i<(BLCKSZ /sizeof(size_t));i++) |
125 | 132 | { |
126 | 133 | if (pagebytes[i]!=0) |
127 | 134 | { |
|