Fix large object base computation in PUSH_CONTENTS() if MARK_BIT_PER_OBJ
authorIvan Maidanski <ivmai@mail.ru>
Thu, 14 Jun 2018 23:27:11 +0000 (02:27 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Thu, 14 Jun 2018 23:27:11 +0000 (02:27 +0300)
commit38b46be3ed7dd89bcda5418a67b01edc6dfd4a9c
tree28d9ff30bd902ff41cdeef07118dbf718d16e794
parent5f9d95b9363aaf7a8d18e82888dec426ade4fe99
Fix large object base computation in PUSH_CONTENTS() if MARK_BIT_PER_OBJ

Issue #177 (bdwgc).

* include/private/gc_pmark.h [MARK_BIT_PER_OBJ] (PUSH_CONTENTS_HDR):
Do not call LONG_MULT() if inv_sz == LARGE_INV_SZ; set base to
hhdr->hb_block if inv_sz == LARGE_INV_SZ regardless of low_prod>>16
value; use EXPECT(FALSE) for inv_sz == LARGE_INV_SZ expression;
remove FIXME about offset; adjust assertion to allow hb_block==current.
include/private/gc_pmark.h