From 564274514901f43f9b2e308c96ac8b835026a35d Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Fri, 20 Jan 2023 23:48:21 +0300 Subject: 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. --- mark.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mark.c') 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 { -- cgit v1.2.1