|
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 | {
|
|