summaryrefslogtreecommitdiff
path: root/mark.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2023-01-20 23:48:21 +0300
committerIvan Maidanski <ivmai@mail.ru>2023-01-24 11:38:44 +0300
commit564274514901f43f9b2e308c96ac8b835026a35d (patch)
treebb9b67c45316ce83acfcb7c2006bb293f3d34e8d /mark.c
parent9d00bac77558d340d2af1dfbe37829cc16667a06 (diff)
downloadbdwgc-564274514901f43f9b2e308c96ac8b835026a35d.tar.gz
Check highest bit of word using SIGNB instead of cast to signed_word
(refactoring) * allchblk.c (GC_merge_unmapped): Replace overflow check (signed_word)(sz1+sz2)>0 to !((sz1+sz2)&SIGNB). * allchblk.c (GC_freehblk): Likewise. * mark.c (GC_mark_from): Replace (signed_word)descr>=0 expression to !(descr&SIGNB). * ptr_chck.c (GC_is_visible): Likewise.
Diffstat (limited to 'mark.c')
-rw-r--r--mark.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mark.c b/mark.c
index ae8f314f..9f9027d0 100644
--- a/mark.c
+++ b/mark.c
@@ -678,7 +678,7 @@ GC_INNER mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack,
mark_stack_limit, ENV(descr));
continue;
case GC_DS_PER_OBJECT:
- if ((signed_word)descr >= 0) {
+ if (!(descr & SIGNB)) {
/* Descriptor is in the object. */
descr = *(word *)(current_p + descr - GC_DS_PER_OBJECT);
} else {