summaryrefslogtreecommitdiff
path: root/typd_mlc.c
diff options
context:
space:
mode:
Diffstat (limited to 'typd_mlc.c')
-rw-r--r--typd_mlc.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/typd_mlc.c b/typd_mlc.c
index fb8990c6..4078e189 100644
--- a/typd_mlc.c
+++ b/typd_mlc.c
@@ -344,20 +344,21 @@ STATIC mse * GC_typed_mark_proc(word * addr, mse * mark_stack_ptr,
mse * mark_stack_limit, word env)
{
word bm = GC_ext_descriptors[env].ed_bitmap;
- word * current_p = addr;
- word current;
+ ptr_t current_p = (ptr_t)addr;
ptr_t greatest_ha = (ptr_t)GC_greatest_plausible_heap_addr;
ptr_t least_ha = (ptr_t)GC_least_plausible_heap_addr;
DECLARE_HDR_CACHE;
INIT_HDR_CACHE;
- for (; bm != 0; bm >>= 1, current_p++) {
+ for (; bm != 0; bm >>= 1, current_p += sizeof(word)) {
if (bm & 1) {
- current = *current_p;
+ word current;
+
+ LOAD_WORD_OR_CONTINUE(current, current_p);
FIXUP_POINTER(current);
if (current >= (word)least_ha && current <= (word)greatest_ha) {
PUSH_CONTENTS((ptr_t)current, mark_stack_ptr,
- mark_stack_limit, (ptr_t)current_p);
+ mark_stack_limit, current_p);
}
}
}