Skip to content

Commit

Permalink
Fix comment about inv_sz computation in setup_header
Browse files Browse the repository at this point in the history
* allchblk.c [MARK_BIT_PER_OBJ] (setup_header): Fix comment
(sz*inv_sz>=2**32).
* allchblk.c [MARK_BIT_PER_OBJ && INV_SZ_COMPUTATION_CHECK]
(setup_header): Add assertion to check the computation of inv_sz.
  • Loading branch information
ivmai committed Jun 14, 2018
1 parent b43249e commit e55f463
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion allchblk.c
Expand Up @@ -250,7 +250,7 @@ static GC_bool setup_header(hdr * hhdr, struct hblk *block, size_t byte_sz,

# ifdef MARK_BIT_PER_OBJ
/* Set hb_inv_sz as portably as possible. */
/* We set it to the smallest value such that sz * inv_sz > 2**32 */
/* We set it to the smallest value such that sz * inv_sz >= 2**32 */
/* This may be more precision than necessary. */
if (byte_sz > MAXOBJBYTES) {
hhdr -> hb_inv_sz = LARGE_INV_SZ;
Expand All @@ -265,6 +265,9 @@ static GC_bool setup_header(hdr * hhdr, struct hblk *block, size_t byte_sz,
inv_sz = ((unsigned)1 << 31)/byte_sz;
inv_sz *= 2;
while (inv_sz*byte_sz > byte_sz) ++inv_sz;
# endif
# ifdef INV_SZ_COMPUTATION_CHECK
GC_ASSERT(((1ULL << 32) + byte_sz - 1) / byte_sz == inv_sz);
# endif
hhdr -> hb_inv_sz = inv_sz;
}
Expand Down

0 comments on commit e55f463

Please sign in to comment.