summaryrefslogtreecommitdiff
path: root/malloc.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2023-05-13 12:57:14 +0300
committerIvan Maidanski <ivmai@mail.ru>2023-05-13 12:57:14 +0300
commit5f6df10a9317385b77d52ee2006f435639e87e44 (patch)
treec35043e983c356385cc7491b501d7611740cf1c3 /malloc.c
parentffc64167e4d0eccbee19794d7eac6b6946cddb63 (diff)
downloadbdwgc-5f6df10a9317385b77d52ee2006f435639e87e44.tar.gz
Make comparisons to the lowest heap boundary strict
* alloc.c (GC_expand_hp_inner): Subtract sizeof(word) from new_limit (for the case when comparing to GC_least_plausible_heap_addr). * backgraph.c [MAKE_BACK_GRAPH] (add_back_edges): Compare current to GC_least_real_heap_addr and GC_greatest_real_heap_addr (instead of GC_least_plausible_heap_addr and GC_greatest_plausible_heap_addr). * malloc.c [GC_ASSERTIONS] (GC_malloc_kind_global): Likewise. * include/gc/gc_mark.h (GC_MARK_AND_PUSH): Replace greater-or-equal to strictly greater when comparing to GC_least_plausible_heap_addr. * include/private/gc_pmark.h (GC_PUSH_ONE_STACK, GC_PUSH_ONE_HEAP): Likewise. * include/private/gc_priv.h [MAKE_BACK_GRAPH] (SET_REAL_HEAP_BOUNDS, GC_least_real_heap_addr, GC_greatest_real_heap_addr): Define. * mark.c (GC_mark_from, GC_push_all): Add dummy "| GC_DS_LENGTH" when storing length to mse_descr.w. * mark.c (GC_mark_from): Replace greater-or-equal to strictly greater when comparing to least_ha variable. * typd_mlc.c (GC_typed_mark_proc): Likewise. * mark.c [GC_DS_TAGS>ALIGNMENT-1] (GC_push_all): Simplify code to round up length.
Diffstat (limited to 'malloc.c')
-rw-r--r--malloc.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/malloc.c b/malloc.c
index d921daeb..24aace59 100644
--- a/malloc.c
+++ b/malloc.c
@@ -324,11 +324,9 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_kind_global(size_t lb, int k)
if (k == PTRFREE) {
*opp = obj_link(op);
} else {
- GC_ASSERT(0 == obj_link(op)
- || ((word)obj_link(op)
- < (word)GC_greatest_plausible_heap_addr
- && (word)obj_link(op)
- >= (word)GC_least_plausible_heap_addr));
+ GC_ASSERT(NULL == obj_link(op)
+ || ((word)obj_link(op) < GC_greatest_real_heap_addr
+ && (word)obj_link(op) > GC_least_real_heap_addr));
*opp = obj_link(op);
obj_link(op) = 0;
}