From: Ivan Maidanski Date: Thu, 14 Jun 2018 08:50:03 +0000 (+0300) Subject: Fix comment about inv_sz computation in setup_header X-Git-Tag: v8.0.0~123 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e55f4632;p=gc Fix comment about inv_sz computation in setup_header * 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. --- diff --git a/allchblk.c b/allchblk.c index a4dbc051..030de462 100644 --- a/allchblk.c +++ b/allchblk.c @@ -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; @@ -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; }