Skip to content

Commit 62d59d2

Browse files
committed
code for adaptive padding
1 parent abec2ff commit 62d59d2

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/maker.c

+12-10
Original file line numberDiff line numberDiff line change
@@ -223,20 +223,22 @@ export int hardhat_cmp(const void *a, size_t al, const void *b, size_t bl) {
223223

224224
/* Calculate padding for 4-byte alignment */
225225
static size_t pad4(size_t x) {
226-
size_t p;
227-
p = x & 3;
228-
if(p)
229-
return x + 4 - p;
230-
return x;
226+
return -x % 4;
231227
}
232228

233229
/* Calculate padding for 4096-byte alignment */
234230
static size_t pad4k(size_t x) {
235-
size_t p;
236-
p = x & 4095;
237-
if(p)
238-
return x + 4096 - p;
239-
return x;
231+
return -x % 4096;
232+
}
233+
234+
static size_t adaptive_padding(size_t offset, size_t length, size_t elsize, size_t pagesize) {
235+
size_t align = -offset % elsize;
236+
offset += align;
237+
size_t rest = pagesize - (length % pagesize);
238+
size_t gap = -offset % pagesize;
239+
if(rest > gap)
240+
return gap;
241+
return align;
240242
}
241243

242244
/* Convenience macros to fetch aligned n-bit values */

0 commit comments

Comments
 (0)