summaryrefslogtreecommitdiff
path: root/mark_rts.c
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2012-02-10 08:26:40 +0400
committerIvan Maidanski <ivmai@mail.ru>2012-02-10 10:57:10 +0400
commit28cc8d1ff7410e46cde2a7c5d833df3d2b6f3a80 (patch)
tree1d7d1b74a8c440f28b82cead80810ba8419a81af /mark_rts.c
parent4d972fa5f3f9d2e3e093285df4285c592d88e3fa (diff)
downloadbdwgc-28cc8d1ff7410e46cde2a7c5d833df3d2b6f3a80.tar.gz
Fix GC_root_size update in GC_add_roots_inner (Win32)
* mark_rts.c (GC_add_roots_inner): Fix update of GC_root_size value for Win32 (adjust GC_root_size before altering r_start/r_end).
Diffstat (limited to 'mark_rts.c')
-rw-r--r--mark_rts.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/mark_rts.c b/mark_rts.c
index a57ac3e9..3799a43e 100644
--- a/mark_rts.c
+++ b/mark_rts.c
@@ -189,12 +189,12 @@ void GC_add_roots_inner(ptr_t b, ptr_t e, GC_bool tmp)
old = GC_static_roots + i;
if (b <= old -> r_end && e >= old -> r_start) {
if (b < old -> r_start) {
+ GC_root_size += old->r_start - b;
old -> r_start = b;
- GC_root_size += (old -> r_start - b);
}
if (e > old -> r_end) {
+ GC_root_size += e - old->r_end;
old -> r_end = e;
- GC_root_size += (e - old -> r_end);
}
old -> r_tmp &= tmp;
break;
@@ -210,12 +210,12 @@ void GC_add_roots_inner(ptr_t b, ptr_t e, GC_bool tmp)
e = other -> r_end;
if (b <= old -> r_end && e >= old -> r_start) {
if (b < old -> r_start) {
+ GC_root_size += old->r_start - b;
old -> r_start = b;
- GC_root_size += (old -> r_start - b);
}
if (e > old -> r_end) {
+ GC_root_size += e - old->r_end;
old -> r_end = e;
- GC_root_size += (e - old -> r_end);
}
old -> r_tmp &= other -> r_tmp;
/* Delete this entry. */